使用EntityFramework 4.3 w / POCOs。 如何检查模型上的属性是否被忽略。
在我的DBContext类层次结构中,我忽略了
的属性modelBuilder.Entity<EClass>().Ignore (f => f.IgnoredProperty());
在我的BaseContext类中,我需要检查是否忽略该属性。
private void ProcessGlobalConvention(DbModelBuilder modelBuilder, IGlobalConvention convention)
{
modelBuilder.Entity<typeof(this.GetType())>("Ignored Property");
}
我该怎么做?
由于
答案 0 :(得分:0)
使用EF电动工具http://www.infoq.com/news/2013/10/ef-power-tools-beta4查看您的型号。该物业在那里?
创建数据库。那列是吗?
查看Database.LogSqlEvents http://blog.oneunicorn.com/2013/05/08/ef6-sql-logging-part-1-simple-logging/并解析sql以查看字段名称是否显示...
....除非你真的想要一个代码解决方案......?
在哪种情况下
新建你的DbContext 创建一条记录并将其添加到相关的DbSet 获取DbEntityEntry 查看CurrentValues.PropertyNames。你的房产在那里吗?
[TestMethod]
public void CreateDatabase()
{
Database.SetInitializer(new DropCreateDatabaseAlways<HomesContext>());
var db = new HomesContext();
Assert.IsFalse(db.Homes.Any());
var home = db.Homes.Create();
db.Homes.Add(home);
var entry = db.Entry(home);
Assert.IsTrue(entry.CurrentValues.PropertyNames.Contains("MaxResidents"));
Assert.IsTrue(entry.CurrentValues.PropertyNames.Contains("MaxStaff"));
Assert.IsFalse(entry.CurrentValues.PropertyNames.Contains("CurrentResidents"));
Assert.IsFalse(entry.CurrentValues.PropertyNames.Contains("CurrentStaff"));
}
public class HomesContext:DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Home>().Ignore(x => x.CurrentResidents);
base.OnModelCreating(modelBuilder);
}
public DbSet<Home> Homes { get; set; }
}
public class Home
{
public int HomeId { get; set; }
public string HomeName { get; set; }
public int MaxResidents { get; set; }
public int MaxStaff { get; set; }
public int CurrentResidents { get; set; }
[NotMapped]
public int CurrentStaff { get; set; }
}