C#ef映射实体
我有3个实体:C#ef映射实体,c#,entity-framework,C#,Entity Framework,我有3个实体: public class Category { public Category() { this.Companies = new Company(); this.Language = new Language(); } public string Id { get; set; } public string Name { get; set; } public string ParentId {
public class Category
{
public Category()
{
this.Companies = new Company();
this.Language = new Language();
}
public string Id { get; set; }
public string Name { get; set; }
public string ParentId { get; set; }
public int Sequence { get; set; }
public string Company { get; set; }
public virtual Company Companies { get; set; }
public int CompanyId { get; set; }
public virtual Language Language { get; set; }
public string LanguageId { get; set; }
}
public class Company
{
public Company()
{
this.Categories = new List<Category>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
public class Language
{
public Language()
{
this.Categories = new List<Category>();
}
public string Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
我希望它能找到公司和语言,但它们总是一个新的对象
那怎么了?为什么它没有发现该公司与该实体有关联?只是一个建议:你已经在他们之间建立了关系。你不需要使用。包括
var translatedCategory = ctx.Category.Where(x => x.Companies.Id == someID);
只是一个建议:你已经在他们之间建立了关系。你不需要使用。包括
var translatedCategory = ctx.Category.Where(x => x.Companies.Id == someID);
这行应该是this.HasKey(w=>new{w.Id,w.LanguageId,w.Company});CompanyId?是的,因为我使用了一个非常旧的数据库,其中的键是一个复合键,它不使用公司id,而是使用companyname,在该实体中称为just company。我将CompanyId添加到该表中,以便它可以将其作为外键从公司引用。这一行应该是this.HasKey(w=>new{w.Id,w.LanguageId,w.Company});CompanyId?是的,因为我使用了一个非常旧的数据库,其中的键是一个复合键,它不使用公司id,而是使用companyname,在该实体中称为just company。我将CompanyId添加到该表中,以便它可以将其作为外键从公司引用OK,但这对我没有帮助。我添加include是因为它们厄尔null@DanielGustafsson我只是补充了一个建议。至于这个问题,我会看看你在CategoryMap中建立关系的方式。他们没有很直观地说明如何正确地建立这种关系,但从表面上看,你正在建立一种多对多的关系,这种关系将有一个拥有多个catego的公司的类别好吧,但这对我没有帮助。我添加了include,因为它们在哪里null@DanielGustafsson我只是补充了一个建议。至于这个问题,我会看看你的关系在分类图中是如何建立的。他们并没有很直观地说明如何正确地建立这种关系,但从表面上看,你正在建立一种多对多的关系p将有一个类别,该类别包含一个具有多个类别的公司。
var translatedCategory = ctx.Category.Where(x => x.Companies.Id == someID);