标签: linq-to-sql

Linq2Sql和lambda返回"方法"System.Object DynamicInvoke(System.Object [])'没有支持的SQL转换"

为什么...

Func<IQueryable<CampaignCodePaths>> table = () => CampaignCodePaths;

Func<CampaignCodePaths, int> propertySelector = e => e.Id;

int key = 1;

Func<CampaignCodePaths, bool> whereSelector = e => propertySelector(e).Equals(key);

table().Where(whereSelector).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

......工作但......

Func<IQueryable<CampaignCodePaths>> table = () => CampaignCodePaths;

Func<CampaignCodePaths, int> propertySelector = e => e.Id;

int key = 1;

table().Where(e => propertySelector(e).Equals(key)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

...返回异常:

方法'System.Object DynamicInvoke(System.Object [])'没有支持的SQL转换

UPDATE

澄清:

CampaignCodePath Get(Func<IQueryable<CampaignCodePaths>> table, Func<CampaignCodePaths, int> selector, int key)
{
    return table().Where(/*How to I create this expression from selector and key? */).FirstOrDefault();
}

...

Get(() => CampaignCodePaths, …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

1
推荐指数
1
解决办法
187
查看次数

从"Linq to SQL"迁移到Entity Framework 4

问题

在过去,我们的开发团队决定创建一个新的企业应用程序,并决定使用"Linq to SQL",因为实体框架"糟透了".(不是我的意见!)他们使用Visual Studio 2008,EF不是默认设置的一部分,但需要额外的插件.因此决定使用Linq to SQL来访问数据库.因此,我们现在围绕一个包含DBML和L2SQL实体的datamodule类库有多个项目......

需要

现在很明显,这些开发人员错了.一些人转移到其他公司,一些新的公司被包括在这个项目中.(包括我.)我们想要使用实体框架.最好是带有.NET 4.0的版本4 ......这将使我们对数据更加灵活,我们希望在几个实体中包含一些继承,使代码更易于阅读和更好用.

问题:如何......

那么,如何从"Linq to SQL"迁移到Entity Framework 4而无需重写我们的大部分代码?

linq-to-sql entity-framework-4

1
推荐指数
1
解决办法
2512
查看次数

LINQ to SQL:检查通用存储库中是否存在通用实体

我有一个通用的存储库就像那样

public class Repository<T> : IRepository<T> where T: class
{
    DataContext _db;
    public Repository()
    {
        _db = new DataContext("connection string");
    }
    System.Data.Linq.Table<T> GetTable
    {
        get { return _db.GetTable<T>(); }
    }
    public T GetBy(Func<T, bool> exp)
    {
        return GetTable.SingleOrDefault(exp);
    }
    ....
}
Run Code Online (Sandbox Code Playgroud)

是否可以向此存储库添加通用方法以检查是否存在任何类似的实体:

public bool IsExisted(T entity)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

很容易在任何存储库中编写它

_productRepository.GetBy(p => p.Id == 5 // or whatever);
Run Code Online (Sandbox Code Playgroud)

其中productRepository如下:

public class ProductRepository : Repository<Product>
{
    public ProductRepository()
        : base()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我来到这里因为我总是想检查实体的存在,所以我不需要在所有存储库中编写相同的方法.

c# generics domain-driven-design repository-pattern linq-to-sql

1
推荐指数
1
解决办法
1099
查看次数

什么是LINQ相当于MIN?

与SQL MIN函数相当的C#LINQ是什么?

我想将以下SQL转换为LINQ:

Select MIN(dbo.Orders.OrderTimestamp) as MinimumTimeStamp From dbo.Orders;
Run Code Online (Sandbox Code Playgroud)

谢谢

c# linq linq-to-sql

1
推荐指数
1
解决办法
212
查看次数

System.Collections.Generic.IEnumerable

当试图用entityframework查询我的数据库时,我得到以下错误:类型'System.Collections.Generic.IEnumerable 1[[TASK.Warehouses.Domain.NoteProducts.NoteProduct, TASK.Warehouses.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' is not a single implementation of 'System.Collections.Generic.ICollection1 [T]' 的导航属性.可能是什么问题,我怎么能解决它

linq linq-to-entities frameworks linq-to-sql entity-framework-4

1
推荐指数
1
解决办法
1171
查看次数

linq to sql更新多条记录

这是一个简单的问题,但我完全迷失了如何处理这个问题.

CREATE TABLE Contract (
  id int PRIMARY KEY,
  batchId int NOT NULL REFERENCES ContractBatch (id)
  campaignId int NULL REFERENCES Campaign (id)
)
Run Code Online (Sandbox Code Playgroud)

这是我的商业模型中的简化表,是针对Linq2Sql模型的.现在我需要像这样做更新查询:

UPDATE Contract SET campaignId = 1 WHERE batchId = 5
Run Code Online (Sandbox Code Playgroud)

这意味着,可以有更多的记录ContractBatch,我需要Campaign为所有记录设置.有可能以一种简单的方式将此查询转换为Linq表达式吗?我能找到的唯一方法是获取所有那些记录,ContractBatch然后逐个循环更新.那不是很有效率.

var campaignId = 1;
var batchId = 5;
using( var dataContext = new DataModel.ModelDataContext() ) {
    dataContext.Contracts
        .Where( c => c.BatchId == batchId )
        // this is obviously my "wish to have" method
        .ForEach( c => c.CampaignId = campaignId …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql c#-4.0

1
推荐指数
1
解决办法
5803
查看次数

LINQ to SQL和SQL中的字段连接

我想创建一个LINQ查询,导致以下SQL语句.假设我有一个只有两个字符字段的简单表 - field1和field2.我的SQL语句是:

    SELECT field1, field2, field1+field2 AS ConcatField
    FROM TableX
    WHERE field1+field2 = 'abcdef'
Run Code Online (Sandbox Code Playgroud)

如何在LINQ中完成?

c# sql linq linq-to-sql

1
推荐指数
1
解决办法
851
查看次数

C#MVC中的Linq百分比

我正在使用带有c#的MVC3,我试图从我的模型中获得以下百分比:

我检索数字:

 ... Code omitted
 AgeGroup = g.Key.AgeGroup,
 Count = (int)g.Count(),
Total = (int)
(from vw_masterview0 in ctx.vw_MasterViews
select new
{
vw_masterview0.ClientID
}).Count() 
... Code omitted
Run Code Online (Sandbox Code Playgroud)

我需要划分:

百分比=计数/总计*100

我不知道如何在Linq格式化这个.

c# linq-to-sql

1
推荐指数
1
解决办法
1258
查看次数

使用C#在LINQ查询中获取连接表的MAX值的最有效方法

我试图找到最有效的方法来获取LINQ中连接表中的最新记录.

此查询可能会处理数千条记录,因此我不想执行子查询.

我需要来自项目的所有内容,但只需要来自"Notes"表的最新日期,其字段名称为SubmittedDate.

var items = (from t1 in db.Items
                         from t2
                            in db.Notes
                           .Where(o => (t1.Item_ID == o.Item_ID))
                         select new ItemModel
                         {
                             Name = t1.Name,
                             MostRecentUpdate = t2.SubmittedDate <== Need max value in model
                         });
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

c# linq linq-to-sql c#-4.0

1
推荐指数
1
解决办法
1755
查看次数

将var初始化为空

我有一个以var LinqQuery开头的LINQ查询.但我想将LinqQuery放在if语句中,因此它的过程是某些属性为null或不为null.我需要在if语句之外设置var LinqQuery,因为我有代码循环通过LinqQuery.它是否在if语句之外初始化var LinqQuery.像var LinqQuery = string.Empty这样的东西?

var lQuery = (from a in gServiceContext.CreateQuery("account")
    where (a["name"].Equals(lLead.AccountName) &&
        a["address1_postalcode"].Equals(lLead.ZipCode) &&
        a["address1_stateorprovince"].Equals(lLead.State)) ||
        (a["address1_line1"].Equals(lLead.Address1) &&
        a["address1_postalcode"].Equals(lLead.ZipCode) &&
        a["address1_city"].Equals(lLead.City))
    select new
    {
        Name = !a.Contains("name") ? string.Empty : a["name"],
        City = !a.Contains("address1_city") ? string.Empty : a["address1_city"],
        State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
        Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"],
        AccountId = !a.Contains("accountid") ? string.Empty : a["accountid"]
    });
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# linq linq-to-sql c#-4.0

1
推荐指数
1
解决办法
1万
查看次数