두 엔터티 간의 관계를 발전시키고 싶습니다. 두 엔티티 모두 일대일 관계를 가지고 있으며 둘 다 네비게이션 속성을 가지고있어서 엔티티에 액세스 한 다음 네비게이션 속성이있는 다른 관련 엔티티에 액세스 할 수 있습니다. 예를 보도록하겠습니다.Entity Framework 5.0의 일대일 관계 코드 첫 번째 방법
User와 UserProfile과 같은 엔티티가 있다고 가정합니다. 각 사용자에게는 하나의 프로필 만 있고 하나의 사용자 프로필에는 하나의 사용자 만 있습니다. User.UserProfile과 같은 사용자 프로필에 액세스 할 수 있으며 UserProfile.User와 같은 UserProfile에서도 User에 액세스 할 수 있습니다. 위 엔티티에서 위의 시나리오를 구현하고 솔루션을 얻지 못했습니다. 어떻게이 일을 성취 할 수 있을지 생각해보십시오. 제 방식은 엔티티 프레임 워크 코드에서 일대일 관계를 먼저 구현하는 것입니다.
1
using System;
namespace Ioc.Core
{
public abstract class BaseEntity<T> where T: struct
{
public T ID { get; set; }
public DateTime AddedDate { get; set; }
public DateTime ModifiedDate { get; set; }
public string IP { get; set; }
}
}
2. 사용자 만들기 엔티티
using System;
namespace Ioc.Core.Data
{
public class User : BaseEntity<Guid>
{
public string UserName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
}
3. 만들기 사용자 프로필 엔티티를 기본 엔티티를 생성
using System;
namespace Ioc.Core.Data
{
public class UserProfile : BaseEntity<int>
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public Guid UserId { get; set; }
public virtual User User { get; set; }
}
}
4. 매핑 사용자는 테이블에게 내가 USERPROFILE 엔티티의 기본 키 ID를 정의 할 필요가 없다고 생각하고
using System.Data.Entity.ModelConfiguration;
using Ioc.Core.Data;
namespace Ioc.Data.Mapping
{
public class UserProfileMap : EntityTypeConfiguration<UserProfile>
{
public UserProfileMap()
{
//key
HasKey(t => t.ID);
//properties
Property(t => t.FirstName).IsRequired().HasMaxLength(100).HasColumnType("nvarchar");
Property(t => t.LastName).HasMaxLength(100).HasColumnType("nvarchar");
Property(t => t.Address).HasColumnType("nvarchar");
Property(t => t.AddedDate).IsRequired();
Property(t => t.ModifiedDate).IsRequired();
Property(t => t.IP);
//table
ToTable("UserProfiles");
//relation
HasRequired(t => t.User).WithMany().HasForeignKey(t => t.UserId).WillCascadeOnDelete(false);
}
}
}
을 만들
using System.Data.Entity.ModelConfiguration;
using Ioc.Core.Data;
namespace Ioc.Data.Mapping
{
public class UserMap :EntityTypeConfiguration<User>
{
public UserMap()
{
//key
HasKey(t => t.ID);
//properties
Property(t => t.UserName).IsRequired();
Property(t => t.Email).IsRequired();
Property(t => t.Password).IsRequired();
Property(t => t.AddedDate).IsRequired();
Property(t => t.ModifiedDate).IsRequired();
Property(t => t.IP);
//table
ToTable("Users");
}
}
}
5. 매핑 UserProfiles 테이블을 만들 수 있습니다 UserId 속성도 UserProfile 테이블의 기본 키 및 기본 키가되지만 User Profile에서 User Entity의 탐색 속성을 정의하는 방법은 무엇입니까? 이 도왔다 경우 :) 대답으로 표시하고 투표를하는 것을 잊었다 해달라고 :