2013-05-16 14 views
1

편집 : Entity Framework에서이 형식이 "복합 형식"으로 보이고 한 번 복잡한 유형이 포함 된 항목에 대해 이름을 설정할 수있는 방법을 알 수 있습니다. 클래스에 포함 된 동일한 복합 유형을 여러 개 사용하여이를 수행 할 수있는 방법/방법을 모르겠습니다. 성 액티브가 sunset 되었기 때문에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


, 내가 엔티티 프레임 워크 (5)까지 이동하고, 그러나 나는 "중첩 된 속성을"개념을 수행하는 방법을 모르는 액티브 한 :

http://docs.castleproject.org/Active%20Record.Mappings.ashx#Nested_5

http://docs.castleproject.org/Default.aspx?Page=Nested%20data%20%28NHibernate%20components%29&NS=Active%20Record&AspxAutoDetectCookieSupport=1

나는 인터넷 검색을 해봤지만, 심지어 존재한다면 "중첩 된"이 EF에서이 개념에 대한 적절한 용어인지 확신 할 수 없습니다. 다음은 Castle ActiveRecord에있는 테이블과 클래스입니다. 누군가가 이것을위한 EF 용어를 제공하고 어떻게 수행 할 수 있습니까?

<Nested(ColumnPrefix:="FL")))>으로 표시된 AmaStatementEntity의 Address 속성은 데이터베이스 열 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 
+0

가능한 복제본 [Entity Framework - 재사용 복잡한 유형] (http://stackoverflow.com/questions/9931341/entity-framework-reuse-complex-type) – BlackICE

답변

1

내가 올바른 용어를 발견하면 내가 대답 찾을 수 있었다 :

이 당신을 어떻게 할 것입니다 내 특정 시나리오에

Entity Framework - Reuse Complex Type

를 (예는 comlex 유형 참조 중 하나의 매핑을 보여줍니다)

 modelBuilder.ComplexType<AddressEntity>(); 
     modelBuilder.Entity<AmaStatementEntity>().ToTable("vAMA"); 
     modelBuilder.Entity<AmaStatementEntity>().HasKey(a => a.AMAId); 
     modelBuilder.Entity<AmaStatementEntity>().Property(a => a.FacilityLocation.Street).HasColumnName("FLStreet"); 
     modelBuilder.Entity<AmaStatementEntity>().Property(a => a.FacilityLocation.Suite).HasColumnName("FLSuite"); 
     modelBuilder.Entity<AmaStatementEntity>().Property(a => a.FacilityLocation.City).HasColumnName("FLCity"); 
     modelBuilder.Entity<AmaStatementEntity>().Property(a => a.FacilityLocation.ZipCode).HasColumnName("FLZipCode"); 
     modelBuilder.Entity<AmaStatementEntity>().Property(a => a.FacilityLocation.Country).HasColumnName("FLCountry"); 
     modelBuilder.Entity<AmaStatementEntity>().Property(a => a.FacilityLocation.State).HasColumnName("FLState");