Tag: linq to sql

在Framework 3.5中Linq-To-Sql动态Where子句是否可能?

更新:现在正在工作 我终于完成了它。 下面的答案中详述了一个工作示例(我将在2天内进行标记)。 以下所有内容都是原始问题的一部分 在过去的3天里,我一直在尝试使用来自此处和其他来源的 问题的代码示例在DBML DataContext上构建一个dynamic-where子句…… 没有一个有效 ! 由于以下原因,我开始怀疑在Framework 3.5下是否甚至可能使用它: Predicate Builder在其网站上注明了Framework 4.0。 这里的一些答案谈论4.0中的一个等效的Invoke版本(所以我在这里有一些希望)。 ……我可以继续,但你明白了。 我真的很茫然,似乎在“抓住弦乐”……我需要一些关于如何处理这个问题的合理建议。 原始版本取得了一些成功,但仅限于: 数据出现的唯一时间我得到了“成功”(所有6178行),但没有应用WHERE CLAUSE 。 这可以通过在dataContext.GetCommand(query).CommandText找到的SQL 没有应用任何WHERE CLAUSE dataContext.GetCommand(query).CommandText 。 其他版本#1失败: 并生成此错误:“方法”System.Object DynamicInvoke(System.Object [])’没有受支持的SQL转换。“ // VERSION 1: public static class PredicateBuilder { public static Expression<Func> True() { return f => true; } public static Expression<Func> False() { return f […]

在LINQ to SQL中搜索两列?

我试图在Visual Studio中使用LINQ to SQL创建一个简单的搜索方法。 在我的数据库中,我有“Firstname”和“Lastname”字段,我的搜索字符串是“name”。 如何创建一个搜索这两个字段的简单LINQ查询? 在纯SQL中我会做这样的事情: SELECT (Firstname + Lastname) as ‘Fullname’ FROM table WHERE Fullname LIKE ‘%searchstring%’

如何设计Repository模式以便以后轻松切换到另一个ORM?

我是存储库模式的新手,但我尝试过,我的目标是制作一个设计,只需一些编辑“dependency injection或配置编辑”就可以轻松地切换到另一个ORM,而无需触及其他解决方案层。 我达到了这个实现: 这是代码: public interface IRepository { T Get(int key); IQueryable GetAll(); void Save(T entity); T Update(T entity); // Common data will be added here } public interface ICustomerRepository : IRepository { // Specific operations for the customers repository } public class CustomerRepository : ICustomerRepository { #region ICustomerRepository Members public IQueryable GetAll() { DataClasses1DataContext […]

使用LINQ和Entity Framework获取存储过程输出参数

我创建了一个存储过程,它接受参数来创建用户。 如果用户已存在,则将输出参数设置为“用户已存在”,并且不执行任何操作。 现在我已将此函数(InsertNewUser)映射到我的entity framework,并调用它如下: context.InsertNewUser(email,name,passwordhash,salt,???) ??? 是我遇到麻烦的地方。 在存储过程中,此参数是OUTPUT参数。 我尝试声明一个字符串,然后传入“out declaredString”但这不正确。 我不确定我是以正确的方式去做,有什么想法吗? 这是存储过程: ALTER PROCEDURE dbo.InsertNewUser ( @eMail nvarchar(256), @firstName nvarchar(256), @lastName nvarchar(256), @passwordHash nvarchar(256), @salt nvarchar(256), @output nvarchar(256)OUTPUT ) 如 / *将用户保存到数据库。 * / 开始 – 首先检查用户是否不存在 IF EXISTS(从UserSet发送电子邮件到WHERE eMail = @eMail) – 返回该用户存在 SET @output =’用户存在’ 其他 INSERT INTO UserSet VALUES(@eMail,@ firstName,@ lastName,@ passwordHash,@ […]

LINQ options.loadwith问题

我正在编写一个基于标签的ASP.net系统。 使用以下数据库方案: Topic TagTopicMap Tag 基本上,我从以下方面找到了3NF方法(toxi): http ://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html 这是我的代码片段: DataLoadOptions options = new DataLoadOptions(); options.LoadWith(t => t.TagTopicMaps); options.LoadWith(tt => tt.Tag); var db = new lcDbDataContext(); db.LoadOptions = options; db.Log = w; var x = from topic in db.Topics orderby topic.dateAdded descending select topic; ViewData[“TopicList”] = x.Take(10); 当我执行它时,结果很好,但它提出了11个单个SQL查询,一个用于获取前10个主题的列表: SELECT TOP (10) [t0].[Id], [t0].[title], [t0].[dateAdded] FROM [dbo].[Topics] […]

仅在单个类中禁用Linq to SQL Classes中的自动复数

我有一个带有不规则复数的表名(复数与单数相同)。 是否有任何方法可以禁用该单个表的自动复数(Account = DB.Accounts),同时保留其他表的function?

在LINQ查询中无时间返回日期

我正在编写一个查询,我想计算我们的呼叫中心按日期联系的次数。 看起来很简单,但由于联系日期字段是日期时间字段,我得到时间,所以当我按联系日期(时间)分组时,每个联系日期实例的计数都为’1’。 所以,我想在没有时间的情况下按日期分组。 下面是我用来查询数据库的表达式: MyDataContext db = new MyDataContext(); var items = (from h in db.ContactHistories group h by h.contact_dt into g orderby g.Key select new { contact_dt = g.Key, item_count = g.Count() }).Take(50); 我试过用 h.contact_dt.ToShortDateString() 但这不起作用,因为SQL确实知道ToShortDateString()。 任何想法都非常感谢。 谢谢! 编辑: .Take(50)用于限制我获得的记录数量,直到我添加日期选择器和where子句,因此我没有获得所有400K记录。 ;)

MVC批量编辑 – Linq到Sql列表保存

为了了解使用MVC和Linq to SQL的一些基础知识,我正在努力改编Stephen Walther的TaskList应用程序 : 我正在使用Steve Sanderson博客中描述的概念添加批量编辑系统。 这一切都按预期工作,但是,我在保存返回的任务列表时遇到问题。 发布到我的BulkEdit循环返回列表并更新我的LinqToSql db任务列表中的每个项目。 我的BulkEdit视图inheritance了ViewPage<List> ,如下所示: TaskEditor控件inheritanceSystem.Web.Mvc.ViewUserControl ,如下所示: Description: Date: Completed: Controller Get和Post方法如下: [AcceptVerbs(HttpVerbs.Get)] public ActionResult BulkEdit() { var tasks = from t in db.Tasks orderby t.EntryDate descending select t; return View(tasks.ToList()); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult BulkEdit(IList tasks) { foreach(Task task in tasks) { foreach(Task dbTask in db.Tasks) { […]

INotifyPropertyChanging接口如何帮助限制内存消耗

我开始学习Windows Phone 8的LINQ-to-SQL ,并在MSDN上看到了这篇文章。 它们显示了DataContext的基类,它实现了INotifyPropertyChanging和INotifyPropertyChanged 。 INotifyPropertyChanging是: ◦INotifyPropertyChanged接口用于更改跟踪。 ◦INotifyPropertyChanging接口有助于限制与更改跟踪相关的内存消耗。 本文未能提供任何特定的引用来certificateINotifyPropertyChanging接口的内存消耗声明。 关于INotifyPropertyChanging本身的文章只是说: 通知客户端属性值正在更改。 有人可以向我解释这个界面如何限制应用程序的内存占用,只需通知一个属性值即将发生变化(甚至不会限制该变化发生)?

为什么我的交易没有升级到DTC?

我的机器上禁用DTC。 我的理解是这个代码应该失败,因为它在同一个事务中使用了两个数据上下文。 那么,它为什么有用呢? (注意:我尝试使用.NET 3.5和.NET 4.0。) using (TransactionScope transactionScope = new TransactionScope()) { UpdateEta(); UpdateBin(); transactionScope.Complete(); } 以下是调用的DAL方法: public static void UpdateBin(Bin updatedBin) { using (DevProdDataDataContext dataContext = new DevProdDataDataContext(ConnectionString)) { BinRecord binRecord = (from bin in dataContext.BinRecords where bin.BinID == updatedBin.BinId select bin).FirstOrDefault(); binRecord.BinID = updatedBin.BinId; binRecord.BinName = updatedBin.BinName; dataContext.SubmitChanges(); } } public static […]