0
public class Entity<TId> 
{ 
    public virtual TId {get;set;} 
} 

public class TenantId 
{ 
    public virtual Guid Id {get;set;} 
} 

public class Tenant 
    : Entity<TenantId> 
{ 
    public string Name {get;set;} 
} 

public class AccountId 
{ 
    public virtual Guid Id {get;set;} 
} 

public class Account 
    : Entity<AccountId> 
{ 
    public Account(TenantId tenantId,AccountId accountId) 
    { 
     TenantId = tenantId; 
     Id= accountId; 
    } 

    public TenantId TenantId {get;set;} 
    public string AccountName {get;set;} 
} 

public class TenantMap 
{ 
    public TenantMap() 
    { 
     Id(x=>x.Id.Id).GeneratedBy.GuidComb(); 
     Map(x => x.Name).Not.Nullable(); 
    } 
} 

public class AccountMap 
{ 
    public AccountMap() 
    { 
     Id(x=>x.Id.Id).GeneratedBy.GuidComb(); 
     Map(x=>x.TenantId.Id).Column("TenantId").Not.Nullable(); 
     Map(x => x.AccountName).Not.Nullable(); 
    } 
} 

我需要映射AccountMap.TenantId作爲外鍵(租戶)。 Db必須知道TenantId是Tenant的主鍵。當我像下面一樣向Account添加新記錄時,nhibernate或db必須驗證租戶表中是否存在TenantId值。如何將Nhibernate上的引用對象映射爲外鍵?

Session.Save(新帳戶(新TenantId( 「GUID-的-存在租戶」),新ACCOUNTID( 「GUID」))

回答

0

這裏是修復:

握住租戶模型賬戶類,而不是租戶ID

public class Account 
    : Entity<AccountId> 
{ 
    public Account(Tenant tenant,AccountId accountId) 
    { 
     Tenant = tenant; 
     Id= accountId; 
    } 

    public Tenant Tenant {get;set;} 
    public string AccountName {get;set;} 
} 

更新中。地圖如下

public class AccountMap 
{ 
    public AccountMap() 
    { 
     Id(x=>x.Id.Id).GeneratedBy.GuidComb(); 
     References(x => x.Tenant); // Foreign Key. 
     Map(x => x.AccountName).Not.Nullable(); 
    } 
} 
+0

我知道參考是解決方案BU我需要TenantId而不是引用對象 – oguzh4n

相關問題