저장 :자 NHibernate 상속 문제 나 문제에 봉착 차일
[Class(Table = "Users", Name = "User")]
public class User
{
[Id(0, Column = "UserId", Type = "Guid", Name = "Id")]
[Generator(1, Class = "assigned")]
public Guid Id { get; set; }
[Property(Name = "Password", Column = "Password", Type = "String")]
public string Password { get; set; }
[Property(Name = "Email", Column = "Email", Type = "String")]
public string Email { get; set; }
}
그리고 ditributor :
[JoinedSubclass(ExtendsType = typeof(User), Table = "Distributors")]
public class Distributor : User
{
[Id(0, Column = "DistributorId", Type = "Guid", Name = "Identifier")]
[Generator(1, Class = "assigned")]
protected Guid Identifier { get; set; }
[Property(Name = "Company", Column = "Company", Type = "String")]
public String Company { get; set; }
}
가 지금은 유통 업체에 대한 사용자를 촉진 할 필요가 나는 사용자가 있습니다. 그러나 나는 그의 신분 (시스템의 다른 부분이 그것을 사용하고있다)을 구해야한다. 나는 새로운 배포자를 만들고 사용자를 얻고 있습니다. 하지만 배포자를 구하려고 할 때 다음 오류가 발생합니다.
동일한 식별자 값을 가진 다른 객체가 이미 세션 : ec6f6a9f-a236-4385-835c-7f408a5f594d (엔티티의 MLMCore)와 연결되어 있습니다. 엔티티 디스트리뷰터
모든 메소드 (Save, SaveOrUpdade, SaveOrUpdateCopy, Update)를 시도했습니다. 그러나 그것은 효과가 없습니다. 어떤 아이디어로 그것을 고치는 법? 세션이 해당 ID와 User
의 인스턴스를 포함, 그래서 당신은 해당 ID와 다른 User
(A Distributor
) 저장하려고하면, NHibernate에 불평 -
역할이 디자인되었습니다. 하지만 배포자를위한 추가 필드가 필요합니다. 그리고 상속은 사용자 엔티티를 더 넓게 만드는 데 사용됩니다. –
. 그렇다면 왜 당신의 역할을 추상적으로 만들지 말고 그 역할에 맞는 데이터로 전문화를 동반하십시오. – mookid8000
아쉽게도 디자인을 변경하는 것이 불가능하므로이 상황에서 해결 방법을 찾아야합니다. ( –