首页 新闻 会员 周边 捐助

Entity Framework 列名 'Genre_GenreId' 无效

0
悬赏园豆:20 [已解决问题] 解决于 2011-12-31 15:13

我有两个类对应数据库映射,

Genre

public class Genre
{
public int GenreId { get; set; }
[Required(ErrorMessage = "An Genre Title is required")]
[StringLength(128)]
public string GenreName { get; set; }
public virtual List<Field> Fields { get; set; }
}

和Alumb类

public class Alumb
{
public int AlumbId { get; set; }
[Required(ErrorMessage = "An FieldName Title is required")]
[StringLength(128)]
public string AlumbName { get; set; }
[Required(ErrorMessage = "An Genre Title is required")]
[StringLength(128)]
public Genre Genre { get; set; }

当我需要获取Alumb数据的时候

 public IList<Alumb> GetAlumbs()
{
return db.Alumb.ToList();
}

运行时提示

列名 'Genre_GenreId' 无效

 
问题补充:
public virtual List<Field> Fields { get; set; }
这边打错了,应该是
public virtualList<Alumb>Alumbs{ get; set; }
charje的主页 charje | 初学一级 | 园豆:192
提问于:2011-12-31 10:26
< >
分享
最佳答案
0

modelBuilder.Entity<Alumb>()
.HasRequired(p => p.Genre)
.WithMany(a => a.Alumb)
.HasForeignKey(p => p.GenreId);

charje | 初学一级 |园豆:192 | 2011-12-31 15:12
其他回答(1)
0
public virtual List<Field> Fields { get; set; }
这里的Filed是什么?
收获园豆:20
artwl | 园豆:16736 (专家六级) | 2011-12-31 11:03

你的Genre跟Alumb是一对多关系,所以在多的一端应该把一的做为一个属性,所以你的实体定义要做一些改进,建议在Alumb中加一个外键:

public class Alumb
{
public int AlumbId { get; set; }

[ForeignKey("Genre")]
public int GenreId { get; set; }

[Required(ErrorMessage = "An FieldName Title is required")]
[StringLength(128)]
public string AlumbName { get; set; }

public Genre Genre { get; set; }
}
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-12-31 11:23

@artwl: 非常感谢,虽然我没有按照你用标记的方法,我是通过创建模型来的,但已经解决问题了。

支持(0) 反对(0) charje | 园豆:192 (初学一级) | 2011-12-31 15:11

@charje: 上面的定义跟你的配置效果是一样的

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-12-31 15:15

@artwl: 哈哈,是我想在model里主要用于验证的标记。

支持(0) 反对(0) charje | 园豆:192 (初学一级) | 2011-12-31 20:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册