Редактировать: выглядит так, как это называется «сложным типом» в Entity Framework, и я вижу, как я могу установить имя в столбцах для того, чтобы иметь один сложный тип, содержащийся в класс, но я не знаю, как/если вы можете сделать это с несколькими одинаковыми сложными типами, содержащимися в классе.Реализация «вложенных» свойств в Entity Framework
http://blogs.msdn.com/b/wriju/archive/2010/07/26/ef4-complex-type.aspx
EntityFramework 4.1 Code First incorrectly names complex type column names
Поскольку замок ActiveRecord был sunset, я двигаюсь к Entity Framework 5, однако я не знаю, как выполнить понятие "вложенная свойство", что ActiveRecord было:
http://docs.castleproject.org/Active%20Record.Mappings.ashx#Nested_5
Я сделал свой поиск в Интернете, но я не уверен, что «вложенная» является правильной терминологией для этой концепции в EF, если она даже существует. Вот мои таблицы и классы, которые у меня были в Castle ActiveRecord, кто-то может предоставить терминологию EF для этого и как это можно сделать:
Свойство Address на AmaStatementEntity, помеченное <Nested(ColumnPrefix:="FL")))>
, сопоставляется с столбцами базы данных FLStreet, FLSuite, FLCity и т.д.
CREATE TABLE [dbo].[AMA](
--other columns not necessary to discussion removed
[AMAId] [uniqueidentifier] NOT NULL,
[FLStreet] [nvarchar](255) NULL,
[FLSuite] [nvarchar](255) NULL,
[FLCity] [nvarchar](255) NULL,
[FLZipCode] [nvarchar](255) NULL,
[FLCountry] [nvarchar](255) NULL,
[FLState] [nvarchar](255) NULL,
[BAStreet] [nvarchar](255) NULL,
[BASuite] [nvarchar](255) NULL,
[BACity] [nvarchar](255) NULL,
[BAZipCode] [nvarchar](255) NULL,
[BACountry] [nvarchar](255) NULL,
[BAState] [nvarchar](255) NULL,
[PAStreet] [nvarchar](255) NULL,
[PASuite] [nvarchar](255) NULL,
[PACity] [nvarchar](255) NULL,
[PAZipCode] [nvarchar](255) NULL,
[PACountry] [nvarchar](255) NULL,
[PAState] [nvarchar](255) NULL,
[IAStreet] [nvarchar](255) NULL,
[IASuite] [nvarchar](255) NULL,
[IACity] [nvarchar](255) NULL,
[IAZipCode] [nvarchar](255) NULL,
[IACountry] [nvarchar](255) NULL,
[IAState] [nvarchar](255) NULL,
[EAStreet] [nvarchar](255) NULL,
[EASuite] [nvarchar](255) NULL,
[EACity] [nvarchar](255) NULL,
[EAZipCode] [nvarchar](255) NULL,
[EACountry] [nvarchar](255) NULL,
[EAState] [nvarchar](255) NULL,
[PYAStreet] [nvarchar](255) NULL,
[PYASuite] [nvarchar](255) NULL,
[PYACity] [nvarchar](255) NULL,
[PYAZipCode] [nvarchar](255) NULL,
[PYACountry] [nvarchar](255) NULL,
[PYAState] [nvarchar](255) NULL,
CONSTRAINT [PK_AMA] PRIMARY KEY CLUSTERED
(
[AMAId] ASC
))
Public Class AmaStatementEntity
Public Sub New()
_amaId = Guid.NewGuid
End Sub
'Other properties not relavent to discussion removed
<Nested(ColumnPrefix:="FL")))>
Public Property FacilityLocation() As AddressEntity
<Nested(ColumnPrefix:="BA"))>
Public Property BillingAddress() As AddressEntity
<Nested(ColumnPrefix:="PA"))>
Public Property PatientAddress() As AddressEntity
<Nested(ColumnPrefix:="IA"))>
Public Property InsuredAddress() As AddressEntity
<Nested(ColumnPrefix:="EA"))>
Public Property EmployerAddress() As AddressEntity
<Nested(ColumnPrefix:="PYA"))>
Public Property PayorAddress() As AddressEntity
Public Property AMAId() As Guid
End Class
Public Class AddressEntity
Public Property Street() As String
Public Property Suite() As String
Public Property City() As String
Public Property State() As String
Public Property ZipCode() As String
Public Property Country() As String
Public Property AddressId() As Guid
End Class
Возможный дубликат [Entity Framework - Reuse Complex Type] (http://stackoverflow.com/questions/9931341/entity-framework-reuse-complex-type) – BlackICE