我正在使用ASP.NET MVC 3
和Entity Framework code first CTP 5
。我想知道是否可以添加未映射到表列的其他屬性?向實體框架添加其他屬性4代碼優先CTP 5實體
我haved一個新聞類,它的定義是這樣的:
public class News : Entity
{
public int NewsId { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public bool Active { get; set; }
}
我的數據庫上下文類:
public class MyContext : DbContext
{
public DbSet<News> Newses { get; set; }
}
在實體類我有一個屬性定義如下:
public IList<RuleViolation> RuleViolations { get; set; }
我還沒有編碼這部分,但我希望所有破碎的規則被添加到這個列表當對象我經驗證。我正的錯誤是:
One or more validation errors were detected during model generation:
System.Data.Edm.EdmEntityType: : EntityType 'RuleViolation' has no key defined. Define the key for this EntityType.
System.Data.Edm.EdmEntitySet: EntityType: The EntitySet RuleViolations is based on type RuleViolation that has no keys defined.
這裏是我的reposity代碼:
public News FindById(int newsId)
{
return context.Database.SqlQuery<News>("News_FindById @NewsId",
new SqlParameter("NewsId", newsId)).FirstOrDefault();
}
更新2011-03-02:
這裏是我Entity
類:
public class Entity
{
public IList<RuleViolation> RuleViolations { get; set; }
public bool Validate()
{
// Still needs to be coded
bool isValid = true;
return isValid;
}
}
這是我的RuleViolation
cl屁股:
public class RuleViolation
{
public RuleViolation(string parameterName, string errorMessage)
{
ParameterName = parameterName;
ErrorMessage = errorMessage;
}
public string ParameterName { get; set; }
public string ErrorMessage { get; set; }
}
這裏是我的上下文類:
public class MyContext : DbContext
{
public DbSet<News> Newses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<News>().Ignore(n => n.RuleViolations);
}
}
@David:我到底會把這段代碼放在哪裏? – 2011-03-01 14:36:34
@Brendan我用代碼示例更新了答案。 – 2011-03-01 14:45:05
@David:謝謝你的擴展答案。我是否需要包含base.OnModelCreating(modelBuilder);?如果是這樣,那麼我需要在這段代碼之前還是之後包含代碼? – 2011-03-02 06:14:17