Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架检索逗号分隔的外键表数据_C#_Entity Framework - Fatal编程技术网

C# 使用实体框架检索逗号分隔的外键表数据

C# 使用实体框架检索逗号分隔的外键表数据,c#,entity-framework,C#,Entity Framework,我有一列将用户id保存为逗号分隔的值 '32,12,64' 如果可能的话,使用实体框架获取相关表数据的最佳方法是什么,因为在任务的部分类中有[NotMapped]属性,因为维护审核历史记录的触发器不可能将用户id移动到子表。请参阅下面的示例代码 public class Task { public int Id { get;set; } public string UserIds { get;set; } public string UserNames { get;s

我有一列将用户id保存为逗号分隔的值

'32,12,64' 
如果可能的话,使用实体框架获取相关表数据的最佳方法是什么,因为在
任务
的部分类中有
[NotMapped]
属性,因为维护审核历史记录的触发器不可能将用户id移动到子表。请参阅下面的示例代码

public class Task
{
    public int Id { get;set; }
    public string UserIds { get;set; }
    public string UserNames { get;set; }
}

var task = GetCurrentTask()

foreach(var userId in task.UserIds.Split(','))
{
   task.UserNames += GetUserNameFor(userId);
}

在这里,UserIDs字段是字符串,因此,如果您有该字段的值,可以使用LINQ进行查询

var userIDs = "32,12,64";
var result = Usertable.retrieve(x=> x.UserID.Contains(userIDs)).ToList();

这样试试。您可以从用户表中找到结果中包含所有字段值的所有数据。

是否希望用户名作为逗号分隔的值?是的。用户名作为逗号分隔的值。目前我们使用触发器捕获表的历史详细信息,因此当使用子表时,我们无法捕获子表的审核历史。严格来说,逗号分隔的值在任何情况下都不是FK,因为您无法保证目标属性是键,该属性上的索引丢失(+无法维护),并且包含约束(FK约束)不存在。如果您想使用它(我强烈建议遵循@marc_的建议并修改您的模式),您可以拆分、解析并使用.Contains(在SQL中)方法;但我已经知道这很快就会中断。但在这种情况下,我如何捕获表行编辑历史的历史?是否可以将其用作任务表部分Classis中的[NotMapped]属性?我尚未尝试使用[NotMapped]属性。所以,我不是很确定,如果对你有效,请尝试一下。