유창한 nhibernate automap a a 클래스를 인터페이스에서 상속하는 초록 클래스에서 상속하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1809909

  •  05-07-2019
  •  | 
  •  

문제

방금 유창한 nhibernate를 사용하기 시작했고 내 엔티티를 자동 맵핑하려는 다음 문제를 해결했습니다.

public interface IDataEntity {}

public abstract class PhysicalEntity : IDataEntity {

         public virtual int Id { get;  set; }
         public virtual string Name { get; set; }
}

public class Mine  : PhysicalEntity {

        public virtual string MineString { get; set; }
}

private static ISessionFactory CreateSessionFactory()
        {
            return Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2008
                .ConnectionString(c => c.FromConnectionStringWithKey("CSMID_FNH")))
                .Mappings(m =>
                m.AutoMappings.Add(
                AutoMap.AssemblyOf<Mine>()
                .Where(t => t.Namespace == "DAL.DomainModel" && t.IsClass && !t.Name.EndsWith("Attribute") )
                .IgnoreBase<PhysicalEntity>()))
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory();
        }

이제 idataentity 인터페이스에 대한 참조를 제거하면 자동 캡처가 작동합니다. 인터페이스에 ID 필드를 삽입하려고 시도했지만 자동 맵에 idataentity 유형을 무시하도록 지시하는 것처럼 nhibernate 런타임 오류가 발생합니다. 내가 여기서 무엇을 놓치고 있습니까? 내 도메인의 모든 클래스가 Idataentity에서 상속되기를 정말로 원합니다.

도움이 되었습니까?

해결책

좋아, 그래서 나는 대답이 있다고 생각한다.

내가해야 할 일은 다음과 같이 내 idataentity를 수정하는 것입니다.

공개 인터페이스 idataentity {int id {get; }}

나는 원래 이것을 get and set로 시도했지만, 추상 클래스가 보호 된 세트를 사용하고 인터페이스에서 상속받을 수 없었기 때문에 문제가있을 것입니다. 인터페이스에서 세터를 남겨 두는 것이 지금은 작동하는 것처럼 보이므로 다른 문제가 발생하지 않기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top