[英]Linq insert many to one rows
我想一次將10行插入與另一個表具有多對一關系的表中。
MainTable.cs文件顯示如下:
public class MainTable
{
public int Id { get; set; }
[Required]
public Customers Customers { get; set; }
public string Attribute1 { get; set; }
public string Attribute2 { get; set; }
}
客戶表如下所示:
public class Customers
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
我試圖用10個不同的Attribute1列向MainTable添加10行,同時保持Customer不變。 但是當我嘗試如下添加它時,它沒有給我添加重復的CustomerId的選項:
public void AddRecord(int customerId)
{
IEnumerable<Attributes> Attributes = GetAttributes();
foreach (var attribute in Attributes)
{
_context.Add(new MainTable
{
***Customers.Id = customerId*** << Customers.Id doesn't exist.
Attribute1 = attribute
});
}
_context.SaveChanges();
}
有人知道怎么做嗎?
這是因為MainTable
類(順便說一句,這是實體類的糟糕名稱)沒有客戶ID字段。 期望有一個完整的Customer
對象。
您可以將Customer
對象傳遞給函數:
public void AddRecord(Customer customer)
{
IEnumerable<Attributes> Attributes = GetAttributes();
foreach (var attribute in Attributes)
{
_context.Add(new MainTable
{
Customer = customer,
Attribute1 = attribute
});
}
_context.SaveChanges();
}
或者,您可以從函數內的ID獲取Customer
對象:
public void AddRecord(int customerId)
{
//First get the Customer object. This is an example, modify to your actual code
Customer customer = GetCustomer(customerId);
IEnumerable<Attributes> Attributes = GetAttributes();
foreach (var attribute in Attributes)
{
_context.Add(new MainTable
{
Customer = customer,
Attribute1 = attribute
});
}
_context.SaveChanges();
}
您會注意到,我將MainTable.Customers
屬性重命名為Customer
。 使用復數名詞會造成混淆。 您的Customer類不是列表,而是用於單個實體的,因此將其重命名為單數名詞Customer
,並對MainTable.Customers
屬性執行相同的MainTable.Customers
。
如果您實際上希望將其作為列表,則將屬性更改為:
public List<Customer> Customers { get; set; }
Customer
類仍應為單數。
然后將上述功能中的分配行更改為:
_context.Add(new MainTable
{
Customers = new List<Customer>{ customer },
Attribute1 = attribute
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.