MVC5实体框架的问题

时间:2013-12-12 10:34:22

标签: asp.net-mvc entity-framework

我在我的Web应用程序中使用Visual Studio 2013中的ASP.NET MVC5,Entity Framework 6。我正在尝试我的模型工作,但出于另一个原因而得到错误。我已经尝试了Fluent API和自己的模型。我确信它一定是傻事但是我被卡住了......需要帮助。目前我在映射和建模类中遇到错误..我添加了控制器,当我调试var = a1时,我得到以下错误

EntityFramework.dll中发生了'System.Data.Entity.ModelConfiguration.ModelValidationException'类型的异常,但未在用户代码中处理

测试模型类

public class TestModel
{
    public int testID { get; set; }
    public string Title { get; set; }
}

映射类

public class TestMap : EntityTypeConfiguration<TestMap>
{
    public TestMap()
    {
        // Primary Key
        this.HasKey(t => t.testID);

        // Properties
        this.Property(t => t.Title)
            .IsRequired()
            .HasMaxLength(50);

        // Table & Column Mappings
        this.ToTable("testTable");
        this.Property(t => t.testID).HasColumnName("testID");
        this.Property(t => t.Title).HasColumnName("Title");
    }
}

上下文

public class My_Context : DbContext
{
    public My_Context()
        : base("name=My_Context")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         Database.SetInitializer<DORIS_Context>(new CreateDatabaseIfNotExists<DORIS_Context>());
        //modelBuilder.Configurations.Add(new TestMap());    
    }

    public DbSet<TestModel> Test { get; set; }
}

的Web.config

<connectionStrings>
    <add name="My_Context"
</connectionStrings>

控制器

 public class TestController : Controller
{
    //
    // GET: /Test/
    public ActionResult Index()
    {
        using (var db = new DORIS_Context())
        {
            var query = from b in db.Test
                        orderby b.testID
                        select b;

            foreach (var item in query)
            {
                var a1 = item.Title;
            }
        }

        return View();
    }
}

1 个答案:

答案 0 :(得分:5)

您是否有任何理由在DORIS_Context课程中初始化My_Context课程?您的DbSet<TestModel>已在My_Context课程中定义,但在您的操作方法中,您使用的是DORIS_Context来调用它。

如果没有必要,请在下面注释

// Database.SetInitializer<DORIS_Context>(new CreateDatabaseIfNotExists<DORIS_Context>());

然后,将EntityTypeConfiguration<TestMap>更改为以下内容:

public class TestMap : EntityTypeConfiguration<TestModel>

并且您的索引操作应如下所示:

public ActionResult Index()
{
    using (var db = new My_Context())
    {
       //
    }
    return View();
}

此外,您可能需要在TestModel中添加keyattribute,如下所示:

public class TestModel
{
    [Key]
    public int testID { get; set; }
    public string Title { get; set; }
}