Bre*_*ogt 8 asp.net asp.net-mvc entity-framework entity-framework-4 asp.net-mvc-3
我正在使用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; }
}
Run Code Online (Sandbox Code Playgroud)
我的数据库上下文类:
public class MyContext : DbContext
{
public DbSet<News> Newses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在实体类中,我有一个定义为的属性:
public IList<RuleViolation> RuleViolations { get; set; }
Run Code Online (Sandbox Code Playgroud)
我还没有对这部分进行编码,但我希望在验证对象时将所有破坏的规则添加到此列表中.我得到的错误是:
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.
Run Code Online (Sandbox Code Playgroud)
这是我的重叠代码:
public News FindById(int newsId)
{
return context.Database.SqlQuery<News>("News_FindById @NewsId",
new SqlParameter("NewsId", newsId)).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
更新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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的RuleViolation
班级:
public class RuleViolation
{
public RuleViolation(string parameterName, string errorMessage)
{
ParameterName = parameterName;
ErrorMessage = errorMessage;
}
public string ParameterName { get; set; }
public string ErrorMessage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的上下文类:
public class MyContext : DbContext
{
public DbSet<News> Newses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<News>().Ignore(n => n.RuleViolations);
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*enn 17
您可以通过向类的OnModelCreating
方法添加忽略规则来使用Fluent API忽略该类型MyContext
public class MyContext : DbContext {
public DbSet<News> Newses { get; set; }
protected override void OnModelCreating(ModelBuilder builder) {
builder.Ignore<RuleViolation>()
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用该NotMapped
属性忽略该属性
public class Enitity {
[NotMapped]
public IList<RuleViolation> RuleViolations { get; set; }
//other properties here
}
Run Code Online (Sandbox Code Playgroud)
然后实体框架将忽略该属性.
归档时间: |
|
查看次数: |
14471 次 |
最近记录: |