2011-09-13 36 views
0

您好我有一個數據庫是設置如下:實體框架一對一的關係都需要

它有一個User誰屬於一個Area

public class User : IEntity 
    { 
     public int UserId { get; set; } 
     public string Username { get; set; } 
     public int AreaId { get; set; } 
     public string CreatedByUserName { get; set; } 
     public DateTime CreatedDateTime { get; set; } 
     public string LastModifiedByUserName { get; set; } 
     public DateTime? LastModifiedDateTime { get; set; } 

     //Navigation properties 
     public virtual Area Area { get; set; } 
    } 

它有一個Area具有User類型的DefaultAdmin

public class Area : IEntity 
     { 
      public virtual int Id { get; set; } 
      public virtual string Name { get; set; } 
      public virtual int DefaultAdminId { get; set; } 
      public string CreatedByUserName { get; set; } 
      public DateTime CreatedDateTime { get; set; } 
      public string LastModifiedByUserName { get; set; } 
      public DateTime? LastModifiedDateTime { get; set; } 
    } 


// Navigation properties 
     public virtual User DefaultAdmin { get; set; } 
    } 

它甚至有可能到一些設置這樣的嗎?他們都需要對方,所以當開始這些表空你不能創建一個,因爲前者需要更晚。

回答

1

假設基礎表的模式有外鍵NOT NULL約束,這組關係也將是從事物(即使離開的EntityFramework出來的圖片)

,您將能夠在數據庫方面的問題做下列操作之一:

a)重新領域和用戶

b之間的關係),或者如果關係說明確實是準確的:

  • 暫時放鬆的要求,使得第一用戶可以在沒有區域被創建
  • 創建第一用戶(可能ADMINUSER)
  • 創建的第一區域與所述第一用戶作爲DefaultAdmin
  • 關聯與所述第一用戶如問題

上面可以部署一個數據庫時,完成作爲數據庫初始化腳本運行的一部分的步驟描述在上一步

  • 創建區域恢復關係的要求。一旦第一個區域和用戶存在,您將能夠添加更多內容而不會破壞所描述的要求。

    我應該指出的是,在這個問題作爲標題描述的關係是不是真的一到一:DefaultAdmin用於許多領域(1對多)

    • 使用者可能
    • 一個區域可以有許多用戶(1對多)

    希望幫助...