2015-06-27 119 views
1

我們有以下兩張表,其中收集類型是最適合這種情況的,我們如何選擇其他情況。哪種集合類型最適合在實體框架中創建poco類?

public class Employee{ 
public int Id {get;Set;} 
public string Name{get;set;} 
} 
public class Comapany{ 
public int Id {get;set;} 
public string Name {get;set;} 
public virtual ICollection<Employee>employees{get;set;} or 
public virtual list<Employee>employees{get;set;} 
} 

回答

0

在這種情況下不要緊,EF將默認到位使用List<T>ICollection<T>。集合類型也不會影響LINQ查詢。在其他情況下,您應該選擇哪些集合更適合您的應用程序邏輯。常見的選擇是List<T>HashSet<T>

1

一般的建議是使用最不特定的類型/接口,即ICollection<T>,除非你想強制執行特定的要求。

原因是您可以自由使用適合任何情況的特定類型。讓我舉個例子。

假設您有一種方法將Employee添加到新的Company,但您希望保證這些員工的名稱是唯一的。如果Company.EmployeesICollection<T>,則現在可以使用HashSet<Employee>,該名稱由constructor taking an IEqualityComparer<Employee>按名稱比較Employee進行初始化,並將其分配給Company.Employees

對於其他sceneario的你可能想使用List<Employee>,因爲AddRange派上用場。

用於從數據庫中首先反向工程代碼的Visual Studio工具創建POCO類,該類初始化其集合的時間爲HashSet s,因爲它們提供高性能集合操作。

相關問題