C# Linq使用DataContext

C# Linq使用DataContext,c#,linq-to-sql,C#,Linq To Sql,我想澄清一些关于托收的疑问 使用Table、IEnumerable和IQueryable之间有什么区别。是否需要选择特定的选项 2对于添加记录,添加方法未出现在我的IDE中,即PersonDB.Persons.Add。 这里有什么问题?1。 是一个 适用于其 成员可以枚举或迭代 结束 是一个LINQ接口 这适用于任何 可以惰性地查询成员。 查询而不具体化 结果集,直到其成员 访问 是我上过的一门课 以前未使用,但表示 表中的特定类型 底层数据库 您选择哪一个取决于您的需求,但IEnumerabl

我想澄清一些关于托收的疑问

使用Table、IEnumerable和IQueryable之间有什么区别。是否需要选择特定的选项

2对于添加记录,添加方法未出现在我的IDE中,即PersonDB.Persons.Add。 这里有什么问题?

1。 是一个 适用于其 成员可以枚举或迭代 结束

是一个LINQ接口 这适用于任何 可以惰性地查询成员。 查询而不具体化 结果集,直到其成员 访问

是我上过的一门课 以前未使用,但表示 表中的特定类型 底层数据库

您选择哪一个取决于您的需求,但IEnumerable是最通用的,所以如果它足够的话,我会在我的类型声明中使用它

2. 要插入人员,请使用InsertOnSubmit:

1. 是一个 适用于其 成员可以枚举或迭代 结束

是一个LINQ接口 这适用于任何 可以惰性地查询成员。 查询而不具体化 结果集,直到其成员 访问

是我上过的一门课 以前未使用,但表示 表中的特定类型 底层数据库

您选择哪一个取决于您的需求,但IEnumerable是最通用的,所以如果它足够的话,我会在我的类型声明中使用它

2. 要插入人员,请使用InsertOnSubmit:

桌子很好,一张桌子。它可以返回IQueryable结果,并可以执行插入/其他特定于数据库的操作。它链接到DataContext

IQueryable是一个很好的列表,而不是一个列表。基本上,IQueryable不会实际加载任何数据,直到您实际请求延迟执行。因此,您可以在将整个内容发送到数据库之前执行多个操作。将IQueryable视为正在进行的SQL语句,而不是实际结果

IEnumerable只是可枚举对象列表的标准接口。当IQueryable实际执行时,您将得到一个IEnumerable集

添加针对单个实例显示-例如Person.Add。对于原始表,您应该使用Insert*方法。

表就是一个表。它可以返回IQueryable结果,并可以执行插入/其他特定于数据库的操作。它链接到DataContext

IQueryable是一个很好的列表,而不是一个列表。基本上,IQueryable不会实际加载任何数据,直到您实际请求延迟执行。因此,您可以在将整个内容发送到数据库之前执行多个操作。将IQueryable视为正在进行的SQL语句,而不是实际结果

IEnumerable只是可枚举对象列表的标准接口。当IQueryable实际执行时,您将得到一个IEnumerable集


添加针对单个实例显示-例如Person.Add。对于原始表,您应该使用Insert*方法。

TableT是LINQ to SQL用于表查询结果的类;它还用于数据上下文的属性,以便您可以在查询中使用数据上下文属性。因此,您帖子中的代码复制了LINQ已经为您编写的一些代码。人员b.人员应始终足以查询人员

对于结果,您可能需要一个集合,因此当iQueDaby和IQueDyEy很好时,您也可以考虑使用列表:

List<Persons> pers = PersonDB.Persons.Where(p => p.name == aName).ToList();

请注意,这是一个立即执行,而不是延迟执行。ToList强制立即执行查询。

TableT是LINQ to SQL用于表查询结果的类;它还用于数据上下文的属性,以便您可以在查询中使用数据上下文属性。因此,您帖子中的代码复制了LINQ已经为您编写的一些代码。人员b.人员应始终足以查询人员

对于结果,您可能需要一个集合,因此当iQueDaby和IQueDyEy很好时,您也可以考虑使用列表:

List<Persons> pers = PersonDB.Persons.Where(p => p.name == aName).ToList();

请注意,这是一个立即执行,而不是延迟执行。ToList强制立即执行查询。

对于第一个问题,请看这个问题:对于第一个问题,请看这个问题:
List<Persons> pers = PersonDB.Persons.Where(p => p.name == aName).ToList();