【发布时间】:2015-08-25 14:46:59
【问题描述】:
好的,所以我有很多对象,但假设它只有 2 个对象,Company 和 People,为了简单的示例,我已经剪掉了大部分道具:
public class Company {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public List<People> Peoples { get; set; }
[StringLength(100)]
[Required]
public string Bname { get; set; }
}
和
public class People {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string FName { get; set; }
[StringLength(50)]
public string LName { get; set; }
[StringLength(50)]
}
我不喜欢使用数据注释,所以我可以将我的地图分开放置。 我的简化映射是:
class CompanyMap : EntityTypeConfiguration<Company> {
public CompanyMap() {
HasMany(p => p.Peoples)
.WithRequired();
}}
似乎效果很好,人们在db中获得了公司的fk,EF可以插入和拉回数据,如果我用lambda做的话我可以查询它:
var tmp = db.Companies.Include("Peoples")
但是如果我尝试用 linq 查询它,然后加入它们:
var tmp2 = from c in db.Companies
join p in db.Person
on c.Id equals p.
这就是我的问题,People 对象没有从 db 公开它的外键,所以我不能像这样加入它们。
所以我的问题是,我可以将创建 fk 的流利 api 公开给我的对象模型,以便我可以 linq 吗?
或者我应该使用 lambda 一个,并以某种方式将其映射到我的视图模型,这样它就不会为此视图生成不需要的列?
【问题讨论】:
标签: c# linq entity-framework foreign-keys ef-fluent-api