小编Lig*_*ng3的帖子

实体框架在不同的工作站上生成不同的查询

我们在单个开发者机器和一些客户端上遇到问题.单Linq查询生成两个不同的SQL查询.问题实际上是第二个查询具有firebird不支持的"OUTER APPLY"语句.我们认为这不是代码问题,而是环境问题,但我会粘贴代码.

linq:

AIds = (from x in context.RISK_T_ASSESS_HIST
    where (x.ID_RISKOBJECT.HasValue && x.F_CREATEDON >= Freq.StartDate && x.F_CREATEDON <= Freq.EndDate)
    group x by x.ID_RISKOBJECT into gr
    let lastCreated = gr.Max(p => p.F_CREATEDON)
    select new
    {
        ObjId = gr.Key
        ,
        LastStatus = gr.Where(p => p.F_CREATEDON == lastCreated && p.ID_RISKOBJECT == gr.Key).Select(p => p.F_STATUS).FirstOrDefault()
    }).Where(x => x.LastStatus == 0 || x.LastStatus == 1).Select(x => x.ObjId.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)

使用OUTER APPLY的SQL

SELECT 
"G"."ID_RISKOBJECT" AS "ID_RISKOBJECT"
FROM   (SELECT 
    "C"."A1" AS "C1", 
    "C"."K1" AS "ID_RISKOBJECT"
    FROM ( SELECT 
        "E"."ID_RISKOBJECT" …
Run Code Online (Sandbox Code Playgroud)

c# linq firebird entity-framework

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

如何将 EntityFramework DataModel 移动到同一项目中的单独文件夹

我想移动 EDMX 文件及其所有依赖项(tt、vb、db 自动生成的类)以避免项目根目录中的混乱。只需将其移动到 DataModel 目录即可。

将 edmx 移动到项目中的目录

当我这样做时,刷新模型等等一切看起来都很好。我没有从 ctontext.tt 模板中得到任何错误。但是当我运行应用程序并通过第一个 EF DB 调用时,我得到:

MetadataException: 无法加载指定的元数据资源

我试图改变 webconfig 连接字符串

<add name="TransparencyMSD" connectionString="metadata=res://*/BLAHDataModel.csdl..." />
Run Code Online (Sandbox Code Playgroud)

<add name="TransparencyMSD" connectionString="metadata=res://*/DataModel/BLAHDataModel.csdl..." />
Run Code Online (Sandbox Code Playgroud)

但是,没有运气:(

我知道我忘记了一些事情,有人会这么好心,至少指点我去哪里看吗?

我在 SO 中搜索了可能的解决方案,但没有人遇到相同的情况。

先感谢您

vb.net entity-framework-6 visual-studio-2013

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

UnitTests - Moq - 如何从与 Setup() 中的参数匹配的 Moq 返回() 对象

我对 Moq 感到困惑,我不确定这里有什么问题。

我想测试依赖于 ILeadStorageService 的 LeadService,并且我想以这种方式配置 Moq - 返回与安装程序中传递的 GUID 匹配的对象。

问题出在 Moq Setup/Returns 行中,因为当我将依赖对象替换为其真实实例时 - 测试通过,但完全错误。我不想只测试 LeadService,而不是从属存储。

    public LeadService( IConfigurationDbContext configurationDbContext, 
                        ILeadStorageService leadStorageService,
                        ILeadDeliveryService deliveryService)
    {
        this.configurationDbContext = configurationDbContext;
        this.leadStorageService = leadStorageService;
        this.deliveryService = deliveryService;

    }
Run Code Online (Sandbox Code Playgroud)

测试方法

        public TestLeadResponse ProcessTestLead(TestLeadRequest request)
        {
        var response = new TestLeadResponse()
        {
            Status = TestLeadStatus.Ok
        };

        try
        {
            var lead = leadStorageService.Get(request.LeadId);
            if (lead == null)
            {
                throw new LeadNotFoundException(request.LeadId);
            }

            var buyerContract =
                configurationDbContext.BuyerContracts.SingleOrDefault(bc => bc.Id == request.BuyerContractId);
            if (buyerContract == …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing mstest moq

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

Linq查询 - List <T>上的"Where"其中reflect属性包含text/value

我想构建一个函数,用户可以搜索列表中的某些属性是否包含值

假设我们将拥有List,并且Company将被定义为具有以下属性的类:

public class Company
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string CompanyAddress1 { get; set; }
    public string CompanyPostCode { get; set; }
    public string CompanyCity { get; set; }
    public string CompanyCounty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在 - 理想情况下我希望有这个参数的功能

List<Company> FilterCompanies(List<Company> unfilteredList, string fieldToQueryOn, string query)
{
    // linq  version what ideally would like to archeve
    return unfilteredList.Where(x => x."fieldToQueryOn".ToString().ToLower().Contains(query.ToLower())).ToList();
}
Run Code Online (Sandbox Code Playgroud)

并致电:

var variable = FilterCompanies(NotNullFilledUnfilteredList, "CompanyCity", …
Run Code Online (Sandbox Code Playgroud)

c# linq expression-trees

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

将C#转换为VB.net - 语法快捷方式

抱歉愚蠢的问题,但这有点烦人的事情.在c#我可以很快说:

new RolesController().SaveUserRole(Userid, cbxRoles.SelectedIndex);
Run Code Online (Sandbox Code Playgroud)

我不喜欢Long Version,而且SaveUserRole返回void:

RolesController rc = new RolesController()
rc.SaveUserRole(Userid, cbxRoles.SelectedIndex);
Run Code Online (Sandbox Code Playgroud)

问题是:在VB中可以做同样的事情 - "短版"吗?不低于版本......

Dim rc As New RolesController()
rc.SaveUserRole(Userid, cbxRoles.SelectedIndex)
Run Code Online (Sandbox Code Playgroud)

c# vb.net

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