如何在跨解决方案共享的数据库项目中引用IdentityDbContext

时间:2019-05-26 14:15:30

标签: c# asp.net-core .net-core entity-framework-core .net-standard

我想利用Visual Studio模板中针对ASP.NET Core项目开箱即用的IdentityDbContext。但是,我希望我的实体和迁移能够存在于共享项目中,以供解决方案的不同组件(Web,API,后台服务等)引用。

我的共享数据库项目将是一个.NET Standard项目,但看来我必须添加对Microsoft.AspNetCore.Identity.EntityFrameworkCore的引用。向Standard项目中引入对专门用于ASP.NET的Core程序集的依赖感觉很奇怪。那会带来什么问题吗?

2 个答案:

答案 0 :(得分:0)

那样应该不会是一个问题。如果您尝试在Net Core项目中引用Net Framework库,那将是一个问题

答案 1 :(得分:0)

您必须为您的Entity对象继承某些Identity类(IdentityUser),因此您必须引用Microsoft.AspNetCore.Identity.EntityFrameworkCore,但我不建议将Identity类与与您的业务层相关的其他Entity类一起存储。

身份与您项目的基础架构有关。只需将与身份相关的类Dbbontext,实体类和服务存储在已存储引用EntityFrameworkCore的Db访问代码的同一项目中即可。

在解决方案上保留两个不同的项目,这些项目引用EntityFrameworkCore只是违反关注点分离。如果要保留2个不同的项目,只需使用相同版本的EfCore。