1

我有一个域模型,其中许多实体都有需要本地化的内容。例如,我们可能有一个 Product 实体,其中名称和描述需要多语言支持。许多其他实体也是如此。

现在这是我要实现的设计:

class LocalizedContent {
     public Guid Id {get; set; }
     public virtual ICollection<LocalizedContentEntry> Values {get; set;} 
}

class LocalizedContentEntry {
     public int Id {get; set; }
     public Guid ContentId {get; set; }
     public string Locale {get; set; }
     public string Value {get; set; } 
}

class Product {
     public int Id {get; set; }
     public LocalizedContent Name {get; set; }
     public LocalizedContent Description {get; set; } 
}

class OtherEntity {
     public int Id {get; set; }
     public LocalizedContent SomeColumn {get; set; }
}

我不喜欢的一件事是 LocalizedContent 的表将只有一列 (Id)。它的目的实际上是充当 LocalizedContentEntity 和其他表之间的桥梁。从 Db 的角度来看,我真正需要的是 LocalizedContentEntity 表。有没有办法在不创建一个列表的情况下映射这些实体?

4

1 回答 1

1

尝试制作LocalizedContentComplexType

[ComplexType]
public class LocalizedContent {
   public Guid Id { get; set; }
   public virtual ICollection<LocalizedContentEntry> Values { get; set;} 
}

这应该会产生以下表格(基于 SQL CE):

CREATE TABLE "LocalizedContentEntries" (
   "Id" int not null identity,
   "ContentId" uniqueidentifier not null,
   "Locale" nvarchar(4000) null,
   "Value" nvarchar(4000) null,
   PRIMARY KEY ("Id")
);
CREATE TABLE "Products" (
   "Id" int not null identity,
   "Name_Id" uniqueidentifier not null,
   "Description_Id" uniqueidentifier not null,
   PRIMARY KEY ("Id")
);
CREATE TABLE "OtherEntities" (
   "Id" int not null identity,
   "SomeColumn_Id" uniqueidentifier not null,
   PRIMARY KEY ("Id")
);

http://blogs.msdn.com/b/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading。 aspx

于 2012-12-05T19:28:30.877 回答