gpt4 book ai didi

c# - 如何获取 ObjectSet 的实体键名?

转载 作者:太空狗 更新时间:2023-10-29 21:20:05 27 4
gpt4 key购买 nike

我创建了一个通用的 ObjectSet<T>在我的通用存储库中。

我想得到的是 name ObjectSet<T> 的 EntityKey这样我就可以在 DataContext.GetObjectByKey 中使用它.

我四处搜索并深入挖掘,但我似乎无法在 ObjectSet 中的任何地方找到这个值。类。

最佳答案

我不久前曾寻找一种很好的方法来做到这一点,但没有找到。我通常最终会在某处和其中构建一个 GetEntityByKey 扩展方法,连接字符串以构建用于 TryGetObjectByKey 调用的实体键。构建实体键的一般思路是这样的:

internal class Program
{
private static void Main(string[] args)
{
var dc = new AdventureWorksLT2008Entities();
object c;
dc.TryGetObjectByKey(GetEntityKey(dc.Customers, 23), out c);
var customer = c as Customer;
Console.WriteLine(customer.EmailAddress);
}

private static EntityKey GetEntityKey<T>(ObjectSet<T> objectSet, object keyValue) where T : class
{
var entitySetName = objectSet.Context.DefaultContainerName + "." + objectSet.EntitySet.Name;
var keyPropertyName = objectSet.EntitySet.ElementType.KeyMembers[0].ToString();
var entityKey = new EntityKey(entitySetName, new[] {new EntityKeyMember(keyPropertyName, keyValue)});
return entityKey;
}
}

您也许可以做类似的事情。为简单起见,此示例假设每个 EntityKey 有一个字段 - 对于多个值键,您需要使用 ObjectSet<T>.ElementType.KeyMembers 做一些稍微复杂的事情。并将所有 key 传递给 EntityKey 构造函数。

关于c# - 如何获取 ObjectSet<T> 的实体键名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com