Tag: linq to sql

为什么Linq不能将表达式/视为本地表达式并抛出exception?

我在这里问了一个关于Linq-to-SQL与C#代码混合导致的Linq错误的问题。 简而言之,编译器会感到困惑,并且没有意识到您打算在从数据库返回后调用结果集上的本地函数。 我接受的答案是在结果集上使用AsEnumerable() ,因此在进行任何进一步的计算之前强制它返回所有列。 我现在的问题是,以一种非常类似的方式,我现在尝试通过外键调用与我的结果集相关的对象的方法,例如: var q = from c in MyCities.AsEnumerable() // note the AsEnumerable, forcing the query to execute before accessing properties of c let cy = c.County select new { CityName = c.Name, CountyName = cy.Name, CountyFoo = cy.Foo() }; 猜猜是什么 – 这再次引发了’exception’。 为什么? 很明显,因为我们需要再次返回数据库才能加载相关的c County 。 只有这一次,我不能调用AsEnumerable() ,因为c只有一个县,而不是一个集合! Dwat那是因为wabbit! 我如何解决这个问题?

使LinqToSQL与数据库保持同步

我将使用asp.net 3.5和LinqToSQL开发一个新网站。 出于可维护性的目的,如果将属性添加到数据库中的表中,如何修改Linq类? 谢谢。

如何调试linq to sql InsertOnSubmit语句?

以下代码已经开始工作了。 db.DBUsers.InsertOnSubmit(new DBUser { AllTheStuff = valuesBeyondYourWildestDreams } ); db.SubmitChanges(); 我的猜测是数据库发生了变化,提交失败,因为映射已关闭。 由于linq visualiser对我不起作用(修复它的奖励点),我想找到另一种方法来了解究竟出了什么问题以及为什么提交失败了。 更新 我试过用 db.SubmitChanges(ConflictMode.FailOnFirstConflict); 得到一个例外,但似乎提交工作。 除了数据库中没有实际的新实体。

从C#中的LINQ中提取SQL列扩展属性

我有一个SQL表,每列都有扩展属性。 有没有办法使用Linq2SQL在c#中从LINQ访问这些?

为什么这个Linq代码总是抛出System.StackOverflowException?

//A query to a local object var deletionCommands = commands .Where(a => a.Operation != Operation.Addition) .Select(a => new { a.Prestador.cod_prestador, a.Prestador.cod_desdobramento }) ; //A Linq-To-SQL query var toDelete = db.Prestadors .Where(a => deletionCommands.Contains(new { a.cod_prestador, a.cod_desdobramento })) ; db.Prestadors.DeleteAllOnSubmit(toDelete); db.SubmitChanges(); 解决问题的唯一方法是显式循环: foreach (var command in commands) { if(command.Operation != Operation.Addition) { var toDelete = db.Prestadors […]

我应该为我的Linq2Sql数据使用Struct而不是轻量级数据类吗?

我经常使用linq2sql生成的类,并创建一个简单的仅数据类 public class myentity { public Guid id { get; set; } public string name { get; set; } // etc } 我没有把方法放在这些类中,我主要使用它们作为帮助类,所以我可以很容易地序列化到/从json和其他类似的操作。 我的问题是,在这种情况下我应该使用结构而不是类吗? 将它作为一个结构或多或少的结构定义似乎是有意义的,但我不知道这里的性能是否理想,因为我经常将类从方法传递给方法而我不想要一个大量的副本,因为结构是价值类型。 我经常做的另一件事是使用Linq2Sql的延迟执行来返回我自己的Linq2Sql类的轻量级版本,而不是它们生成的那个。 我不完全确定使用结构而不是类会在这里产生一些不利的性能影响。 我如何使用延迟执行的一个例子是这样的 public IEnumerable getEntities() { return from me in MyEntity return new myentity() { id = me.id, name = me.name }; } public IEnumerable getEntitiesThatStartWith(string s) { return […]

将有条件构建的SQL where子句转换为LINQ

所以我没有在这里看到一个真正回答这个问题的问题。 这是一个关于linq的新手问题,但我想知道是否可以将以下sql查询(使用C#构建)转换为linq查询: public void DoSomeQuery(bool whereCriteria1, bool whereCriteria2) { string sqlQuery = “SELECT p.*”; string fromClause = ” FROM person p”; string whereClause = ” WHERE “; if (whereCriteria1) { fromClause += “, address a”; whereClause += ” p.addressid = a.addressid and a.state = ‘PA’ and a.zip = ‘16127’ ” } if (whereCriteria2) { fromClause […]

基于本地文件的SQL Server

我为一个使用SQL Server作为其数据库的客户端编写了一个相当大的C#Winforms应用程序。 这最初是为内部使用而设计和开发的。 他们已经决定将他们的缩减版本许可给他们的客户,以及在内部使用完整版本。 虽然缩减版本将存储的一些数据将通过调用Web服务发送到我们的服务器,但是需要将大多数数据存储在本地。 我的大部分数据库经验都使用了SQL Server的安装。 但是,理想情况下,在这种情况下,它应该将数据存储在基于本地文件的数据库中(无需安装和配置数据库服务器)。 他们的客户不太可能具有技术头脑,他们只需要一个安装该软件的setup.exe,它就可以工作了。 我的大多数.NET代码都使用Linq-to-Sql与数据库进行通信。 在这种情况下,本地数据库的最佳选择是什么,这应该允许我仍然使用现有的Linq代码?

Linq2Sql – >根据本地值集搜索数据库 – “不支持使用本地集合的查询”

我正在与Linq2SQL碰壁。 我喜欢它,它的灵活性令人惊叹,但我遇到了有趣的挂断。 我希望它只是缺乏对它的了解,而且确实有一个解决方案。 举个例子……像这样的linq2sql查询: //一些本地的ID集合 var terminalID = new List(){1, 2, 3, 4, 5}; // Linq声明的一部分: queryDataIDs.Where(q => q.DataEventKeyID == 2 && terminalID.Contains((int)q.ValueDecimal)); 将导致@ runtime的错误 “NotSupportedException was unhandled” “Queries with local collections are not supported” 堆: at System.Data.Linq.SqlClient.SqlBinder.Visitor.ConvertToFetchedSequence(SqlNode node) at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitAlias(SqlAlias a) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource source) at System.Data.Linq.SqlClient.SqlBinder.Visitor.VisitSelect(SqlSelect select) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at […]

在LINQ-to-SQL中将URI映射到String-field

我正在尝试使用LINQ将URI作为字符串存储在数据库中。 [Column(Name = “Url”, DbType = “nvarchar(255)”)] public Uri Url { get { return new Uri(_url); } set { _url = value.AbsoluteUri; } } private string _url; 这很好地映射到我的数据库设计,但是,当尝试使用此代码获取数据时: int id = 3; _serie = new DataContext(connString).GetTable(); var serie = _serie.FirstOrDefault(s => s.Id == id); 在最后一行,我得到一个例外 System.InvalidCastException: Invalid cast from System.String to System.Uri etc 我需要做什么才能在我的代码中正确处理URI,但在我的数据库中存储它是一个nvarchar(255)? 看起来很简单,但我无法弄清楚我做错了什么。