不确定标题是否足够好,但我将尝试解释我遇到的问题。作为记录,我对 Code-First 和 Fluent API 非常陌生,这是我在其中使用它们的第一个生产项目。
基本上,我要创建的网络应用程序是多语言的,我决定创建一个包含以下字段的表格(我添加了注释来解释我想要实现的目标):
public class Content
{
[Key]
// Required Key.
public int Id { get; set; }
[Required]
// Language (another class that stores culture and other culture specific info).
public Language Language { get; set; }
[Required]
// Text for the current field.
[Column(TypeName = "ntext")]
public string Text { get; set; }
[Required]
// The field Id, this stores what field the text above relates to.
// So if I have a field "Welcome", and the website has 5 languages, I'll have 5 entries with the same GUID
// but with different text and different language.
public virtual Guid FieldId { get; set; }
}
我一直在尝试许多解决方案,但我没有设法创造出我想要的东西。我最近的一个是:
[Key]
public int Id { get; set; }
[Required]
[Key]
public Guid TitleId { get; set; }
[Required]
[Column("TitleId")]
public virtual ICollection<Content> Title { get; set; }
[Required]
public decimal Value { get; set; }
[Required]
[Key]
public Guid DescriptionId { get; set; }
[Required]
public virtual ICollection<Content> Description { get; set; }
这在上下文中(不确定是否有意义):
modelBuilder.Entity<Winning>()
.HasMany(x => x.Description)
.WithRequired()
.Map(x =>
{
x.MapKey("DescriptionId", "FieldId")
.MapKey("TitleId", "FieldId");
});
基本上我想要的是,当我通过该 GUID 加载上面的对象时,我得到一个相关文本的列表(最好只有一个,因为我会按文化过滤),表Content将被其他对象使用,所以一个外国内容中的关键不能解决我的问题。