gpt4 book ai didi

c# - 动态对象,可持久保存到 Azure 并可通过 Dynamic Linq 进行查询

转载 作者:行者123 更新时间:2023-11-30 13:03:44 25 4
gpt4 key购买 nike

我想做的是创建一个动态联系人列表。我使用 Azure SQL 存储来保存我的数据,并使用 EF。

类型化的基类“Contact”具有ID、姓名、电话等属性和一个“Profile”类,具有 ContactId、PropName、PropVal 等属性,可以存储无限数量的联系人属性(例如性别、地址、年龄等)。

EF Model

现在,这有效了:

var cts = db.Contacts
.Where(p => p.ContactProfile.Any(pr => pr.PropertyName == "Sex" && pr.ValueString == "F")
&& p.ContactProfile.Any(pr => pr.PropertyName == "City" && pr.ValueString == "Kaunas"));

我希望实现的目标是创建一个动态 POCO 类,它将映射到所描述的 EF 结构,并启用使用 Linq 或(*Dynamic Linq)查询这些动态属性。我设法实现的是使用动态类的“Expando ”实现创建动态类。

所以我可以像这样将 EF 模型映射到 Expando

var contact = db.Contacts.First();    
dynamic dynContact = new Expando();
dynContact["Sex"] = db.ContactProfiles.First(p => p.Contact.Id == contact.Id && p.PropertyName == "Sex").ValueString;
dynContact.City = db.ContactProfiles.First(p => p.Contact.Id == contact.Id && p.PropertyName == "City").ValueString;

不知道如何进行这项工作:(因此它将产生与第一个 Linq 查询相同的 SQL 查询)

DynamicContact.Where(p=>p["Sex"] = "F" && p.City = "NY")

最佳答案

Rob Connery 在他的项目 Massive 中做了一些非常类似的事情。 。它可能会准确地完成您想要做的事情,或者为您提供拼图中缺失的部分。

关于c# - 动态对象,可持久保存到 Azure 并可通过 Dynamic Linq 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862998/

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