【发布时间】:2016-03-21 20:52:07
【问题描述】:
在我的解决方案中,我有几个项目,它们共同构成了一个 Web 应用程序的一部分。
我正忙于在我的上下文类中设置实体框架,而不是在
protected override void OnModelCreating(DbModelBuilder modelBuilder)
方法,我希望能够在我的Model 类中创建一个名为ConfigureModel 的方法,然后在那里配置所有主键/外键设置,所以它应该如下所示:
public class UserRolesModel : ModelBase
{
#region Configuration
public static void ConfigureModel(DbModelBuilder modelBuilder)
{
//necessary code here
}
#endregion
}
例如,调用方法如下:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
UserRolesModel.ConfigureModel(modelBuilder);
}
我面临的问题在于我的ConfigureModel 方法:我似乎无法解决DbModelBuilder 引用。即使我将System.Data.Entity dll 添加到我的引用中,它也不起作用。我还需要将实体框架安装到这个单独的项目中才能正常工作。
当然,我不必将 EF 添加到我想使用 DbModelBuilder 的每个项目中吗?
还有什么方法可以做到这一点?
谢谢
【问题讨论】:
-
您是否引用了正确的 .Net 版本?顺便说一句,使用 NuGet 会容易得多。只需将包添加到您的项目中。但是...不应该在 EF 程序集中进行配置,这样您就可以将类程序集与 EF 解耦吗?
-
@GertArnold 我的解决方案中有一个名为 Common 的项目,其中放置了将在整个项目中使用的所有模型。由于这些模型将映射到我的表,我想在它们内部进行配置。您建议我在哪里进行所有必要的配置?
-
我不知道,不知道你的项目。但我不喜欢多个库都依赖于 EF 的想法。也许一个映射程序集完成所有映射?
-
@GertArnold 感谢您的想法。如果我理解正确,您是否认为,我应该创建一个类,几乎就像程序集中引用 EntityFramework 的“Initialize”类,并在那里完成我的所有映射?
标签: c# .net asp.net-mvc entity-framework