我看到有关使用SPMetal生成允许LINQ正常工作的.cs文件的文章。我正在谈论的文件继承自Microsoft.SharePoint.Linq.DataContext类。如何在不重新编译生产环境的情况下使用LINQ,因为我需要在生产环境中使用SPMetal重新生成此文件?我怀疑答案是“做不到”。
我想我会使用CAML查询,除非有一些更简单的方法来使用我缺少的LINQ。
答案 0 :(得分:1)
如果目标只是使用LINQ查询列表,并且您希望避免此类重新编译,请不要使用SPMetal。 LINQ可以直接用于SPListItemCollection e.g。
var FindCustomer = from SPListItem Item in Customers.Items
where Item["Orders"] as int == 5
select Item;
//或选择新的{Title = Item [“Title”]}
这没有硬编码实体,但更灵活。只要您的列表列名称保持不变,即使其他列表发生更改,代码也可以部署在任何环境中。 此外,您可以选择检索少数选定字段的数据,而不是每次都检索所有字段的数据。
答案 1 :(得分:0)
我猜是没有问题的。就个人而言,我一直在使用Linq很长一段时间。我从来没有专门为生产生成cs。您的网站在不同环境中有所不同吗?
答案 2 :(得分:0)
我不确定我是否遗漏了这一点,但是DataContext对象将URL作为构造函数的一部分,所以你应该从某个地方的配置中检索URL。数据库
DataContext teamSite = new DataContext("http://MarketingServer/SalesTeam");
如果您的代码具有SharePoint上下文,则使用SPContext对象。例如。在网络部分
DataContext teamSite = new DataContext(SPContext.Current.Web.Url);