Tag: linq to sql

如何通过finder接口在EntityFramework 4中查找实体? (适用于LinqToSql)

我有一个我的应用程序访问的存储库层,可以用IDataSource初始化; 例如LinqToSqlDataSource,EntityFrameworkDataSource等… IDataSource提供分别插入,更新,删除和查询数据源的方法。 与此问题相关的是, FindAll返回IQueryable 。 我的所有基础实体都实现了一个简单的接口,以便通过id通用且方便地查找实体; public interface IAmIdentifiable { T Id { get; set; } } 下面是我在EntityFramework中遇到问题的FindById方法的相关代码。 public class Repository { public Repository(IDataSource dataSource) {…} public T FindById(TKey identifier) where T : class, IAmIdentifiable { return _DataSource.FindAll().SingleOrDefault(i => i.Id.Equals(identifier)); } … } 这个FindById(…) 适用于LinqToSql,但在EntityFramework 4中不起作用 。 用法示例 User user = Repository.FindById(someUserId); Message msg […]

LinqToSQL – 用大量表格映射DataContext?

我一直在做一个项目,我一直在使用涉及很多表的LinqToSQL 。 所有这些都映射在一个.dbml文件中(即只有一个DataContext )。 我这样做的假装是(目前)你不能加入多个数据上下文。 例如… DB1DataContext db1 = new DB1DataContext(); DB2DataContext db2 = new DB2DataContext(); var query = from x in db1.SomeTable join y in db2.AnotherTable on x.Id equals y.Id select new { x.Column, y.Column }; 有人认为事实并非如此,我应该将.dbml文件分解为单独的较小(即更易管理)的数据上下文。 我现在只是设置一个示例,对上面的一个运行类似的查询并得到以下错误… base {System.SystemException} = {“查询包含对在不同数据上下文中定义的项的引用。”} 我好奇,我错过了什么? 有很多表需要映射的常见做法是什么? 你怎么能打破.dbml文件?

检查BIT列时从LINQ生成的奇怪SQL

我有以下LINQtoSQL语句 from t1 in __table1 join t2 in __table2 on t1.Id equals t2.OtherTableId where t2.BranchId == branchId && !t1.IsPersonal select t1.Id 这会生成以下SQL SELECT DISTINCT [t0].[Id] FROM [__table1] AS [t0] INNER JOIN [__table2] AS [t1] ON [t0].[Id] = [t1].[OtherTableId] WHERE ([t1].[BranchId] = @p0) AND (NOT ([t0].[IsPersonal] = 1)) 现在我的问题是: (NOT ([t0].[IsPersonal] = 1)) 我怎么能写LINQ来说 [t0].[IsPersonal] = […]

是否可以使用Linq to SQL运行任意查询? (C#)

如何使用Linq to SQL编写以下查询? UPDATE [TB_EXAMPLE] SET [COLUMN1] = 1 (我的实际目标比这更复杂)

LinqToSql。 更新行时出现死锁。 的Parallel.For

我有个问题。 我正在尝试使用parallel更新数据库库。 这是代码: Parallel.For(rCnt, range.Rows.Count + 1, (jrCnt, loopState) => { var prcI = new Price(); // new /*bla bla bla bla – bla bla – bla bla – bla */ if ((!string.IsNullOrEmpty(prcI.name)) && (prcI.prc != 0)) // process add or update { prcI.company = nameprice; prcI.date = datatimeselect.Text; Accessor.AddProductUpdateProduct(prcI); // main func /*bla bla […]

查询对象时linq to sql + stackoverflowexception

好的,我已经确认我只有这个问题,当我尝试查询主键,如果实体中的主键设置为’自动生成的值’ – 但没有这个,我怎么能插入? 对不起,如果这是一个菜鸟linq2sql但我刚开始使用它。 如何在关闭此选项的情况下使用Linq to Sql,还让db处理pk? 我不想每次都要qry得到pk我应该分配… 我希望有人可以帮助我,我完全无法在我的一个项目中使用linq到sql,不确定要做什么…这是一个例子,这行引发了StackOverflowexception。 MyDataContext dc = new MyDataContext(ConnStr); var obj = dc.MyDataTable.AsQueryable().SingleOrDefault(a => a.pkID == 4); – 第二行抛出StackOverflowexception。 下面是使用相同datacontext的另一个示例 var o = dc.MyDataTable.Take(1); <– works fine var abc = o.ToArray(); <– unable to evaluate, debugger stops 我有什么想法可以尝试吗? 我似乎很好在同一个解决方案中使用linq to sql在另一个项目中。 – 更新 – 我忘了提到这个特定的实体’MyDataTable’将pk设置为’自动生成的值’ – 我设置为这个因为我有sql做自动增量,这是标识列。

方法链接相当吗?

这工作正常(从初始测试)。 由于方法链接是我的首选格式,我试图弄清楚链接等价的方法是什么,但没有运气。 有任何想法吗? var data = (from p in db.Persons from c in db.Companies where c.CompanyName == companyName && p.CompanyId == c.CompanyId select p) .Select(p => new { Id = p.PersonId, Name = string.Format(“{0} {1}”, p.FirstName, p.LastName) }); 谢谢, –ed

在运行时创建动态LINQ查询表达式,转换为参数化SQL查询

我想为IQueryable创建自定义表达式。 示例扩展方法: public static IQueryable GetByIntTest(this IQueryable qSource, Expression<Func> field, int? value) { if (value == null) return qSource; ConstantExpression constantExpression = Expression.Constant(value, typeof(int?)); BinaryExpression binaryExpression = Expression.Equal(field.Body, constantExpression); var predicate = Expression.Lambda<Func>(binaryExpression, field.Parameters); return qSource.Where(predicate); } 它的工作原理,但问题是它转换为非参数化的sql。 例如没有扩展名的代码 int userId = 3; var testUsual = Context.Set().Where(u => u.Id == userId); 转换为下一个sql SELECT [Extent1].[Id] AS […]

哪一个是更好的lambda表达式或

我有遵循LINQ to SQL查询表达式 from msg in TblUserMessages join user in Aspnet_Users on msg.FromUserID equals user.UserId select new { msg.FromUserID, msg.ToUserID, msg.MessageLocationID, msg.MessageID, user.UserName } 并遵循LINQ方法表达式: TblUserMessages .Join ( Aspnet_Users, msg => msg.FromUserID, user => user.UserId, (msg, user) => new { FromUserID = msg.FromUserID, ToUserID = msg.ToUserID, MessageLocationID = msg.MessageLocationID, MessageID = msg.MessageID, UserName = user.UserName […]

LINQ to SQL – 保存前格式化字符串?

我正在尝试将现有(非LINQ to SQL)类转换为LINQ to SQL实体类,该实体类具有现有(db列)属性,如: public string MyString { get { return myString; } set { myString = FormatMyString(value); } } 有没有办法在保存之前对实体类属性的值进行这种处理? 我应该使用某种实体级别的保存事件来进行格式化(如果这样可以工作)? 我知道LINQ to SQL提供了validation,并且生成了On…Changing()部分方法,它们通过值(而不是ref)提供对新值的访问,但这些方法似乎都没有提供实际修改/的方法在设置值时格式化值 。 谢谢您的帮助。