2017-10-10 10 views
0

asp.net mvc 5を使用してウェブサイトを開発していて、使用しているデータベースがMS SQL Server Management Studio 17.現時点では、エンティティフレームワークを使用して、親と子の関係のあるデータをエンティティフレームワークに挿入してデータベースに更新する必要があります。C#asp.net mvcのエンティティフレームワークを使用して、親と子のデータをSQLデータベースに挿入/更新する方法

親テーブル(アカウント):

public class Accounts 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 

    //The foreign key in database 
    public int UserAddressId { get; set; } 

    //The child collection 
    public virtual ICollection<Addresses> Addresses { get; set; } 
} 

子テーブル(住所):私は、親テーブルにデータを挿入したい場合、私は、SQLで知っ

public class Addresses 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int AddressId { get; set; } 

    [ForeignKey("AddressId")] 
    public virtual Accounts Account { get; set; } 
} 

、私がしなければなりません最初に子テーブルのデータを作成し、そのデータを親テーブルに挿入します。しかし、私はエンティティフレームワークでそれを行う方法を知らない。

質問1: エンティティクラスの関係を正しく設定していますか?

質問2: エンティティフレームワークを使用してデータをデータベースに挿入/更新するにはどうすればよいですか?私はワンショットでやりたい、私にいくつかのコード例を教えてください。

+0

*ワンショットでやりたい*挿入したいものによって決まります。現在のコードを表示してください。 –

+0

こんにちは@GertArnold、私はデータベースにアドレスとアカウントを挿入します。 AccountテーブルのUserAddressIdはAddressテーブルのAddressIdを指す外部キーであるため、データをAccountテーブルに挿入する前にアドレスデータを挿入する必要があります。また、Addressデータが作成された後、外部キーとしてAccountテーブルのAddressテーブルにAddressIdが必要です。 – IYU

答えて

0

モデル:

public class Account 
{ 
    public int AccountId { get; set; } 
    public virtual ICollection<Addresses> Addresses { get; set; } 
} 

public class Address 
{ 
    public int AddressId { get; set; } 
    public int AccountId { get; set; } 
    public virtual Account Account { get; set; } 
} 

DbContext:

public partial class ApplicationDbContext: DbContext 
{ 
    public AppContext(): base("name=ApplicationDbContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

    } 

    public virtual DbSet<Account> Accounts { get; set; } 
    public virtual DbSet<Address> Addresses { get; set; } 
} 

コントローラー:

public class HomeController : Controller 
{ 
    public ApplicationDbContext _context; 

    public HomeController(ApplicationDbContext context) 
    { 
     _context = context; 
    } 
    ...   
} 

追加操作と更新操作については、this articleを参照してください。

関連する問題