【发布时间】:2014-08-15 15:30:35
【问题描述】:
我与管理关联的其他实体有多对多关系。
实体如下:
public class WorkOrderItem : EntityBase
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long WorkOrderItemId { get; set; }
public virtual ICollection<WorkOrderItemLanguage> WorkOrderItemLanguages { get; set; }
}
public class WorkOrderItemLanguage
{
[Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)]
public long WorkOrderItemId { get; set; }
[Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)]
public string LanguageId { get; set; }
[Key, Column(Order = 2), DatabaseGenerated(DatabaseGeneratedOption.None)]
public LanguageType LanguageType { get; set; }
public virtual WorkOrderItem WorkOrderItem { get; set; }
public virtual Language Language { get; set; }
}
public class Language : EntityBase
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string LanguageId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Code { get; set; }
public string IsoCode { get; set; }
public int Ordinal { get; set; }
public virtual ICollection<WorkOrderItemLanguage> WorkOrderItemLanguages { get; set; }
}
模型构建器配置
public class WorkOrderItemConfiguration : EntityTypeConfiguration<WorkOrderItem>
{
public WorkOrderItemConfiguration()
{
HasMany(x => x.WorkOrderItemLanguages).WithRequired(x => x.WorkOrderItem).HasForeignKey(x => x.WorkOrderItemId);
}
}
public class LanguageConfiguration : EntityTypeConfiguration<Language>
{
public LanguageConfiguration()
{
HasMany(x => x.WorkOrderItemLanguages).WithRequired(x => x.Language).HasForeignKey(x => x.LanguageId);
}
}
如果生成查询以选择具有所有相关语言的 WorkOrderItem,我如何包含语言实体?
以下查询不加载语言实体
UnitOfWork.Set<WorkOrderItem>()
.Include(x => x.WorkOrderItemLanguages.Select(l=>l.Language))
.FirstOrDefault(x.WorkOrderItemId == id);
【问题讨论】:
-
没有加载
Language实体的对象上LanguageId的值是多少? -
具体值?它来自另一个数据库 - 看起来像一个 GUID,但将它作为字符串存储在我的数据库中。这能回答你的问题吗?
-
是否存在与字符串值匹配的
LanguageId语言?我也不建议将您的键设置为字符串。 -
所有匹配项。我在下面使用 Ashish 的答案,它确实有效,但如果可能的话,我更喜欢强类型的解决方案。
-
你能展示你的ModelBinder代码吗?
标签: c# .net entity-framework asp.net-4.5