Asp.net
向實體框架添加附加屬性 4 程式碼優先 CTP 5 實體
我正在使用
ASP.NET MVC 3和Entity Framework code first CTP 5。我想知道是否可以添加未映射到表列的其他屬性?我有一個新聞類,它是這樣定義的:
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.這是我的儲存庫程式碼:
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課: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); } }
您可以通過在類的
OnModelCreating方法中添加忽略規則來使用 Fluent API 忽略類型MyContextpublic class MyContext : DbContext { public DbSet<News> Newses { get; set; } protected override void OnModelCreating(ModelBuilder builder) { builder.Ignore<RuleViolation>() } }或者您可以使用屬性忽略該
NotMapped屬性public class Enitity { [NotMapped] public IList<RuleViolation> RuleViolations { get; set; } //other properties here }然後實體框架將忽略該屬性。