簡體   English   中英

Ef7一對多關系HasOne WithMany和Attatch

[英]Ef7 One To many relationships HasOne WithMany and Attatch

我有以下情況

我試圖用dbase中的現有地址保存雇主。 我已經保存並存儲了地址。 我只想保存一個帶有鏈接地址的雇主。

我以為attach會很好,當我有一個要保存的新“地址”時,這似乎可以正常工作。 但是,一旦我嘗試將雇主與現有地址聯系起來,就會出現問題。

事情保存正常-雇主和地址的相關鏈接已保存。 但是隨后在下一個傳遞(保存)時,鏈接斷開了(新記錄使用了link)。

我正在使用EF7 RC1決賽。

    public class ApplicationDbContext : DbContext
{
    public virtual DbSet<Employers> Employers{ get; set; }
    public virtual DbSet<Address> Addresses { get; set; }
    }

public class Employer
{
    public int Id { get; set; }
    public string Title { get; set; }
    public virtual Address Address { get; set; }  
}

for (int i = 0; i < 10; i++)
            {
                Employer item = new Employer();                  
                // 2 address seeds - so toggle between them
                if(i % 2 == 0)
                {
                    item.Address = _dbContext.Addresses.Single(s => s.Postcode == "one address");                   
                }
                else
                {
                    item.Address = _dbContext.Addresses.Single(s => s.Postcode == "second address");
                }

                _dbContext.Attach(item.Address);                    
                _dbContext.Courses.Add(item);
                _dbContext.SaveChanges();                   

            }

我遇到的問題是由關系定義引起的

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  // add the relationship       
  modelBuilder.Entity<Employer>().HasOne(u => u.Address).WithOne();      
}

GitHub上ajcvickers的解釋清楚了這一點

地址和員工之間存在一對一的關系。 這意味着每個地址只能與一個雇員相關聯。 通過循環的每次迭代,您都將地址分配給新的Employee,這會使它從先前的Employee取消分配。 我不確定確切要建模的內容,但是您可能需要一對多的關系,以便許多員工可以共享同一地址。 如果是這樣,請將您的關系映射更改為:

modelBuilder.Entity<Employer>().HasOne(u => u.Address).WithMany(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM