【问题标题】:Model class and Mapping模型类和映射
【发布时间】:2012-10-21 18:38:42
【问题描述】:

我已经定义了 Client 类。我还有使用 Fluent API 定义列名的 Mapping\ClientMap.cs 文件。但是,我不确定如何“调用”它,因为我没有看到正在执行的 ClientMap.cs 代码。

我也有这个:

namespace CardNumbers.Data
{
    public class Repository : DbContext, IRepository
    {
        public DbSet<Client> Clients { get; set; }
        public DbSet<ClientOrder> ClientOrders { get; set; }
        public DbSet<Reorder> Reorders { get; set; }
        public DbSet<Operator> Operators { get; set; }

我知道这不是一个很好的做法,但这就是我们与讲师一起构建应用程序的方式。

所以,我的问题是 - 我需要添加什么来确保在运行时调用 Fluent API 代码?

提前致谢。

【问题讨论】:

    标签: entity-framework fluent


    【解决方案1】:

    您应该将映射代码直接放在您的OnModelCreating 方法中(这是一个您可以在DbContext 上覆盖的虚拟方法),或者将它放在一个单独的配置类中,然后从OnModelCreating 方法中调用它.

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Client>().Property(p => p.Name).IsRequired();
    }
    

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new ClientConfiguration());
    }
    

    其他地方:

    public class ClientConfiguration : EntityTypeConfiguration<Client>
    {
        public ClientConfiguration()
        {          
            this.Property(p => p.Name).IsRequired();
        }
    }
    

    【讨论】:

    • 还有一个问题 - 这个问题是否只有 1 个被接受的答案?如果我点击复选框接受其中一个答案,另一个将失去复选标记。
    • 重新设计后我收到此错误 InnerException: System.Data.SqlClient.SqlException HResult=-2146232060 消息=在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
    【解决方案2】:

    流畅的映射应该像这样添加到你的“Repository”类的底部

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //add fluent api code
        }
    

    我引用您的存储库的原因是您并没有真正在那里实现存储库模式。您确实应该将其定义为特定的 DbContext,然后拥有一个可以采用多个上下文的存储库。请参阅这篇写得很好的关于实现存储库的文章:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

    【讨论】:

    • 非常感谢你们两位,我要重新设计了,幸好我在开发上还没有太大进展,所以我仍然可以切换。
    • 我已经重新设计了,但现在我遇到了以前没有遇到的 SQL Server 错误。
    • @Naomi - 你能用相应的代码和你得到的确切错误为此提出一个新问题吗?
    • 请查看最底部的消息social.msdn.microsoft.com/Forums/en-US/transactsql/thread/… 我发布了整个错误和我的 DbContext 类。我正在按照教程中的示例进行操作
    • 没关系,我想通了,它现在可以工作了,所以我可以在我的 Web 应用程序中进行测试。
    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多