entity framework存储过程

我正在构build一个Excel导入function,允许用户指定哪些列映射到对象的哪个属性。 然后使用reflection,我创build一个新的对象,设置属性值,并将新的对象插入DbSet。 但是,一些新的对象可能是重复的,应更新现有的logging,而不是作为新的对象添加到DbSet。

Excel工作表将不包含该对象的ID列。 所以我想为其他字段(如FirstName和LastName)的组合添加一个索引。 然后,我想将一个对象列表传递给存储过程,就像传入一个表参数一样; 所以我可以select索引匹配的数据库中的所有logging。

如何将对象列表传递到entity framework存储过程?

DbSet已经是您可以添加对象的列表对象。 如果您有一个唯一标识每个对象的function键,那么您应该能够使用LINQ查找和更新它。

您可以通过逗号分隔的列表(string)传递它们,只要它less于8K个字符。 然后你可以通过这个function来分割它们。 (该function将在SP中使用)。

CREATE PROCEDURE ... @NameList Varchar(8000) Select * from People where (FirstName+'-'+LastName) in dbo.Split(@NameList,',') .... 

基于分隔符分隔符分割值的function

 CREATE FUNCTION [dbo].[Split] ( @Input VARCHAR(8000), @Delimiter CHAR(1) ) RETURNS TABLE AS RETURN ( WITH Split(stpos,endpos) AS( SELECT 0 AS stpos, CHARINDEX(@Delimiter,@Input) AS endpos UNION ALL SELECT endpos+1, CHARINDEX(@Delimiter,@Input,endpos+1) FROM Split WHERE endpos > 0 ) SELECT SUBSTRING(@Input,stpos,COALESCE(NULLIF(endpos,0),LEN(@Input)+1)-stpos) As Item FROM Split )