2012-10-16 61 views
-1

我是新約MVC + EF將數據插入多個表MVC3

我需要在一個時間數據插入到3臺,但想不通我怎麼能做到這一點 我的數據模型是

public class UserLogin 
    { 
     [Key]public int UserID { get; set; } 
     public string LoginName { get; set; } 
     public byte Password { get; set; } 
    } 
    public class UserDetails 
    { 
     [Key] 
     public int DetailID { get; set; } 
     [ForeignKey("UserLogin")] 
     public int UserID { get; set; } 
     public string UserName { get; set; } 
     public string Address { get; set; } 
    } 
    public class UserType 
    { 
     [Key] 
     public int TypeID { get; set; } 
     [ForeignKey("UserLogin")] 
     public int UserID { get; set; } 
     public string TypeName { get; set; } 
     public string TypeDiscription { get; set; } 
    } 
    public class UserBDCon : DbContext 
    { 
     public DbSet<UserLogin> logins { get; set; } 
     public DbSet<UserDetails> Detail { get; set; } 
     public DbSet<UserType> Type { get; set; } 
    } 

任何人都可以告訴我怎麼看這個模型的控制器和視圖文件?

+0

您是否嘗試過除上述之外的其他任何事情? –

+0

您可以使用存儲過程在一個過程執行中將數據插入到3個表中。 – 2012-10-16 08:02:07

回答

0

你應該在你的模型類創建附加屬性:

和數據模型應該是這樣的:

public class UserLogin 
{ 
    [Key] 
    public int UserID { get; set; } 
    public string LoginName { get; set; } 
    public byte Password { get; set; } 
} 
public class UserDetails 
{ 
    [Key] 
    public int DetailID { get; set; } 

    [ForeignKey("UserLogin")] 
    public int UserID { get; set; } 

    public string UserName { get; set; } 
    public string Address { get; set; } 

    //additional 
    public UserLogin UserLogin { get; set; } 
} 
public class UserType 
{ 
    [Key] 
    public int TypeID { get; set; } 
    [ForeignKey("UserLogin")] 
    public int UserID { get; set; } 
    public string TypeName { get; set; } 
    public string TypeDiscription { get; set; } 

    //additional 
    public UserLogin UserLogin { get; set; } 
} 

例(沒有工作和存儲庫,但單個上下文的單位):

UserBDCon db = new UserBDCon(); 

    var userLogin = new UserLogin() {LoginName = "Admin", Password = new byte()}; 
    var details = new UserDetails() {Address = "Address", UserName = "Admin", UserLogin = userLogin}; 
    var type = new UserType() {TypeDiscription = "Description", TypeName = "TypeName", UserLogin = userLogin}; 

    db.logins.Add(userLogin); 
    db.Detail.Add(details); 
    db.Type.Add(type); 

    db.SaveChanges(); // EF insert data into 3 table at a time 

你應該使用相同的數據庫環境。在這種情況下查詢將成爲同一交易的一部分。 會更好地實現存儲庫模式和工作單位的目標單個事務像這樣http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

0

我必須創建新的類,其中將包括所有這些類是這樣的:

public class ViewModel() 
{ 
    public IList<UserLogin> LoginModel {get; set;} 
    public IList<UserDetails> DetailsModel {get; set;} 
    public IList<UserType> TypeModel {get; set;} 
} 

而且你必須回到這個模型的回報視圖(視圖模型),並創造出比你可以綁定像這樣的表強烈tiped觀點:

foreach(var item in ViewModel.LoginModel) 
{ 

}