Fluent NHibernate Automapper Override를 사용하여 엔티티에 고유 한 컬럼을 지정하려고합니다. CodeType의 테스트 클래스의 경우 Type 속성을 고유하게 만들고 싶습니다. 목표는 현재 저장되어있는 CodeType과 동일한 유형 필드를 사용하여 현재 엔터티 위에 겹쳐서 작성되는 "새 CodeType()"을 만드는 것입니다.Fluent에서 고유 컬럼 정의하기 NHibernate Automap Override
I가 다음 CodeType 클래스 :
public class CodeType : SecurableEntity
{
public virtual string Type { get; set; }
public virtual string Description { get; set; }
/// <summary>
/// This is a placeholder constructor for NHibernate.
/// A no-argument constructor must be available for NHibernate to create the object.
/// </summary>
public CodeType() { }
}
나는 다음과 같은 CodeTypeMap 클래스가 있습니다
public AutoPersistenceModel Generate()
{
var mappings = AutoMap.AssemblyOf<User>(new AutomappingConfiguration());
mappings.IgnoreBase<Entity>();
mappings.IgnoreBase<SecurableEntity>();
mappings.IgnoreBase(typeof(EntityWithTypedId<>));
mappings.Conventions.Setup(GetConventions());
mappings.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
mappings.UseOverridesFromAssemblyOf<UserMap>();
mappings.UseOverridesFromAssemblyOf<CodeMap>();
mappings.UseOverridesFromAssemblyOf<CodeTypeMap>();
return mappings;
}
: 오버라이드는 다음을 통해, 오토 맵에 적용되는
public class CodeTypeMap : IAutoMappingOverride<CodeType>
{
public void Override(AutoMapping<CodeType> mapping)
{
//Doesn't work. Need a way to specify a column as unique.
mapping.Map(m => m.Type).Unique();
}
}
을
"type"이 "existingTyp"인 기존 레코드를 업데이트하려면 다음 코드를 사용하고 싶습니다. 이자형".
SecurableEntityRepository<CodeType> ctr = new SecurableEntityRepository<CodeType>();
CodeType ct = new CodeType();
ct.type = "existingType";
ct = ctr.SaveOrUpdate(ct);
입력란의 Hibernate 키를 고유하게 만들려면 어떻게해야합니까?
이것이 가능합니까?
당신은 당신이 이런 식으로 뭔가를 할 건가요 수있다 "업데이트 CodeType 세트의 형태 = 'existingType'유형 = '형' "? –
또한 모든 매핑이 필요하다고 확신하지 않습니다 .UseOverridesFromAssemblyOf();'. 모든 오버라이드가 동일한 어셈블리에있는 경우 해당 어셈블리 중 하나만 필요합니다. –