我在我的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();
}
}
答案 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; }
}