내가 모델 여기 User
Entity Framework AddOrUpdate 메서드에서 복합 형식 속성을 식별자로 사용하려면 어떻게해야합니까? 내 응용 프로그램에서
public class User
{
private ICollection<User> friends;
private ICollection<Album> albums;
public User()
{
this.albums = new HashSet<Album>();
this.friends = new HashSet<User>();
}
public int Id { get; set; }
public UserInfo UserInfo { get; set; }
public int BornTownId { get; set; }
public Town BornTown { get; set; }
public int CurrentLivingTownId { get; set; }
public Town CurrentLivingTown { get; set; }
public virtual ICollection<User> Friends
{
get
{
return this.friends;
}
set
{
this.friends = value;
}
}
public virtual ICollection<Album> Albums
{
get
{
return this.albums;
}
set
{
this.albums = value;
}
}
}
을 가지고 UserInfo
은 다음과 같습니다 복잡한 유형 :
[ComplexType]
public class UserInfo
{
[Required]
[MaxLength(30)]
[MinLength(2)]
[Column("FirstName",TypeName = "varchar")]
public string FirstName { get; set; }
[Required]
[MaxLength(30)]
[MinLength(2)]
[Column("LastName", TypeName = "varchar")]
public string LastName { get; set; }
[NotMapped]
public string FullName => this.FirstName + " " + this.LastName;
[Required]
[MaxLength(30)]
[MinLength(4)]
[Column("Username", TypeName = "varchar")]
public string Username { get; set; }
[Required]
[MinLength(6)]
[MaxLength(50)]
[Column("Password", TypeName = "varchar")]
[PasswordValidation]
public string Password { get; set; }
[Required]
[Column("Email", TypeName = "varchar")]
[DataType(DataType.EmailAddress)]
[EmailValidation]
public string Email { get; set; }
[Column("RegisteredOn")]
public DateTime RegisteredOn { get; set; }
[Column("LastTimeLoggedIn")]
public DateTime LastTimeLoggedIn { get; set; }
[Range(1, 120)]
[Column("Age")]
public int Age { get; set; }
[Column("IsDeleted")]
public bool IsDeleted { get; set; }
}
내가 context.Users.AddOrUpdate(u => u.UserInfo.Username, user);
으로 사용자 테이블에 대한 데이터를 씨앗을 시도, 다음과 같은 오류 메시지가 나타납니다.
Message=The properties expression 'u => u.UserInfo.Username' is not valid. The expression should represent a property: C#: 't => t.MyProperty'.
내 퀘스트 이온 (문제의 대상만큼 복잡합니다) : UserInfo
클래스 또는 속성에 임의의 태그를 추가하거나 FluentApi
을 사용하여 변경해야하고 올바른 태그 구조를 사용하여 AddOrUpdate에서 식별자로 u.UserInfo.Username
을 사용하는 올바른 구문 방식은 무엇입니까? AddOrUpdate를 사용하는 적절한 방법을 시도하고 있습니다.
나는 Username
을 UserInfo에서 꺼내 직접 User
에 넣을 수 있다는 것을 알고 있지만, 좀 더 "광범위한"솔루션을 목표로합니다.
도움이 될 것입니다. 감사.
AddorUpdate를 수행하지 않는다면 복잡한 유형의 속성에 대한 열을 EF로 만들 수 있습니까? – CodingYoshi
@ 코딩 Yoshi EF는이 방법으로 AddOrUpdate를 처음 사용할 때 열을 추가하지만 값을 시드하지는 않으며 후속 시드에서 예외를 throw합니다.식별자없이 AddOrUpdate를 사용하면 제공된 값으로 테이블을 시드합니다. –