小编Rui*_*mba的帖子

什么在我的EF上下文中将LazyLoadingEnabled设置为false?

首先使用EF5数据库.在创建我的上下文中,我设置ContextOptions.LazyLoadingEnabledtrue.有些事情发生了变化false(我们的代码中没有任何地方更改了设置).

在各个方面,我正在检查它是否仍然true使用这段代码(从实体对象获取上下文).该问题仅在运行多个线程时显示(加载一些实体,然后通过多线程代码传递它们).它不会出现在代码中的任何一致点上,因此无法确定究竟是什么导致它.

我想我只是希望有人可能对EF的内部运作有更多的了解并给我一些线索......

entity-framework entity-framework-5

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

在.NET Web API中设置JSON序列化的最大深度

假设我有这些关系的权利:这只是一个虚构的例子,而不是我现在的实体.

  • 课程
  • 用户
  • NewsPosts

课程有很多用户,用户有很多课程

课程有很多NewsPosts,NewsPosts有很多课程

用户有很多NewsPosts,NewsPosts有很多用户

我首先使用.NET Web API实现实体框架代码,它以JSON的形式发回实体.当我尝试获取一个课程时,它会发回一个带有entites关系的JSON结果,这很好,但我希望设置一个限制它序列化的级别,所以它不会序列化所有关系超出第一个或二级.

GET课程/将序列化为:

   {
     "Users":[{
                "id":1,
                "newsPosts": [{
                                "id":1,
                                "message":"foo"
                             }]
             }],
   "newsPosts":[{
                 "id":2,
                 "message":"bar"
               }]   

   }
Run Code Online (Sandbox Code Playgroud)

我想要的是仅序列化1个或2个级别,结果将是:

   {
     "Users":[{
                "id":1,
                "newsPosts": []
             }],
   "newsPosts":[{
                 "id":2,
                 "message":"bar"
               }]   

   }
Run Code Online (Sandbox Code Playgroud)

我添加了一个:

    json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Run Code Online (Sandbox Code Playgroud)

这是删除referencelooping.

简而言之:有没有办法设置最大数量的节点来序列化?

.net serialization json asp.net-web-api

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

Visual Studio - 用于javascript自定义对象的intellisense

我创建了以下javascript对象:

var Content = Content || {};

// Constructor defines properties and inits object
Content.ProductManager = function () {
    // ...
};


Content.ProductManager.prototype = function () {

    // 
    // private members
    // 


    var setProductAsPreviewed = function (args) {
        // code omitted for brevity
        // ....
    };


    //
    // public members
    // 

    return {
        setProductAsPreviewed: setProductAsPreviewed
    };

} (); 
Run Code Online (Sandbox Code Playgroud)

传递给的对象setProductAsPreviewed具有以下属性:

args = {
    productId: int,
    productName: string,
    updateDate: date,
    saveItems: bool
};
Run Code Online (Sandbox Code Playgroud)

我想包含XML注释,以便我可以获得传递给函数的参数的intellisense setProductAsPreviewed:

var productManager = new …
Run Code Online (Sandbox Code Playgroud)

.net javascript intellisense visual-studio-2010 visual-studio

10
推荐指数
2
解决办法
4842
查看次数

从哪里开始实体框架

任何人都知道如何开始使用EF的好书或帖子?我在其他任何地方看过DnrTV?

.net entity-framework .net-3.5

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

如何在没有数据上下文的情况下更新对象

实体框架为在同一datacontext中更新数据提供了极大的灵活性

Dim personA = (from p in datacontext.Person where p.PersonID = 1 select p)
personA.name = txtName.value
datacontext.savechanges()
Run Code Online (Sandbox Code Playgroud)

如果我必须将此Update函数移动到仅在请求中使用"Person"的Service层,那么将"Person"请求对象分配到datacontext中而不再进行深度复制的最佳方法是什么?

.net vb.net entity-framework

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

实体框架 - 冗余连接字符串

我在我的项目中使用Entity Framework 4.框架已创建自己的连接字符串,因此我的web.configconnectionStrings部分文件如下所示:

  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=localhost;user id=user;pwd=pass;initial catalog=VNK" providerName="System.Data.SqlClient" />    
    <add name="VNKEntities" connectionString="metadata=res://*/VNKModel.csdl|res://*/VNKModel.ssdl|res://*/VNKModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=VNK;User ID=user;Password=pass;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

第一个连接字符串ApplicationServices是我原来的连接字符串.第二个,VNKEntities在生成模型时创建.

当我检查生成的*.edmx文件时,我发现此模型正在引用其连接字符串,如下所示:

    /// <summary>
    /// Initializes a new VNKEntities object using the connection string found in the 'VNKEntities' section of the application configuration file.
    /// </summary>
    public VNKEntities() : base("name=VNKEntities", "VNKEntities")
    {
        this.ContextOptions.LazyLoadingEnabled = true;
        OnContextCreated();
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是如何摆脱VNKEntities连接字符串,只留下ApplicationServices,我将从我的模型中引用?我想只有一个连接字符串到数据库,因为我只使用一个数据库(从更换的构造函数的参数name=VNKEntitiesname=ApplicationServices不工作).

问候

.net c# configuration ado.net entity-framework

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

使用VSTS部署Azure WebJob

我在使用Visual Studio Team Services(VSTS)部署Azure WebJob时遇到了一些问题.

WebJob似乎已成功部署,但它破坏了托管在同一App Service中的Azure网站!如果我使用VS2013部署,我没有这个问题.

这是我的构建任务,它生成WebJob部署包:

构建任务 - 生成Azure WebJob部署包

这是我的部署任务:

部署WebJob任务

部署Azure WebJob时没有错误.如果我去Azure门户,我看到WebJob就在那里,它运行成功.WebJob文件wwwroot\App_Data\jobs\triggered\RemoveExpiredDids按预期复制到文件夹中,但问题是其他一些文件将被复制到该wwwroot\App_Data\bin文件夹中,这将破坏已部署到该App Service中的现有网站!

所以我决定找出为什么会发生这种情况.下载并解压缩部署包后,我看到有2个文件夹(app_databin)和调度程序文件(settings.job):

WebJob部署包

这解释了为什么有些程序集被应用到wwwroot\App_Data\binApp Service中.奇怪的是,从VS2013部署时不会发生这种情况!我查看了MSBuild日志,找到了以下行:

由于跳过指令"SkipBinFolderOnDeploy",跳过了对象dirPath([app service name]\bin).

总结bin一下,从VSTS部署Azure WebJob时会包含文件夹,但在从VS2013部署Azure WebJob时会将其排除在外.

所以我的问题是:如何bin在使用VSTS时阻止部署文件夹?是否有任何MSBuild参数/标志来执行此操作?

msbuild azure visual-studio azure-webjobs azure-devops

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

EntityFramework生成的SQL StartsWith()包含计划改变ESCAPE'〜'(代字号)

使用EntityFramework,该子句.OrderBy(x => x.Title.StartsWith("foo"))导致SQL WHERE (Title LIKE 'foo%' ESCAPE '~').

查看完整查询的执行计划,我发现当我删除时,我得到了一个不同的计划(一个使用列的非聚集索引)ESCAPE '~'.

为什么EF试图逃避不需要它的字符串,我怎么能让它停止?

.net c# sql sql-server entity-framework

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

在Azure Devops上运行构建时找不到资产文件project.assets.json

我在Azure DevOps上为Service Fabric解决方案配置了一个构建管道,如下所示:

构建任务

直到几天前,当某个特定的构建代理(专用)上的构建开始失败时,一切都很好,并出现以下错误(对于一些项目):

C:\ Program Files \ dotnet \ sdk \ 2.1.200 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.PackageDependencyResolution.targets(327,5):错误:资产文件'F:\ Agent03 \ w \ 84 \ s找不到\ src \ MyProject.Sam.Tiles.Domain \ obj \ project.assets.json'。运行NuGet软件包还原以生成此文件。

失败的任务是Build solution $(PathToSolution)一项。

奇怪的是,当在某些代理上运行时构建失败,但是对于其他代理,构建很好

一些细节:

  • Use NuGet 4.x我认为,这项任务是最近开始使用NuGet v4.9.1的。我尝试使用v4.8.1没有运气;
  • 大多数项目使用PackageReference格式,但是.sfproj项目使用packages.config文件
  • 我尝试使用该dotnet restore任务,但尝试恢复该.sfproj项目的软件包时出现错误:

    错误:无法找到.. \ packages \ Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7 \ build \ Microsoft.VisualStudio.Azure.Fabric.Application.props文件。请还原'Microsoft.VisualStudio.Azure.Fabric.MSBuild'Nuget程序包

关于什么可能导致此问题的任何想法?

nuget azure-service-fabric azure-devops azure-pipelines

8
推荐指数
3
解决办法
3799
查看次数

gridview将下拉列表绑定到List <keyvaluePair <int,string >>

我的数据库中有许多表,它们包含对键值对的引用:

电话号码类型:

  • 1 - 家
  • 2 - 工作
  • 3 - 移动
  • 4 - 传真

等等

所以我有一个表的类型,当它们在其他表中使用时,它们将int值作为外键引用.当我把它们拉出来时,我一直把它们存放keyvaluepair<int, string>在正在使用它们的类中.

当我需要获取它们的列表时,我想我只会创建它们的List <>而不是使用两种不同类型的数据类型来获取相同的数据.

当我在使用edittemplate位时需要在gridview中填充下拉列表时,我的问题已经到了.如果我使用数据源将其拉出来,它将在文本中写入[1 Home],而不是将int作为值,将Home作为要显示的文本.

我想我真的有一个多部分问题.

一:

我是傻瓜吗?这是一个非常糟糕的方法来获取数据并存储它(keyvaluepair部分)?我应该将它全部存储在数据表中吗?我不喜欢把它全部放在数据表中.我把我的DAL带到我的BLL并尝试将所有内容封装为对象或List<>对象而不是所有内容的表.大部分时间这都运作良好.

二:

如果我使用某个对象而不是数据表绑定到下拉列表的objectdatasource,我该如何设置当前选择的值,而不是让它只选择列表中的第一项?

编辑

正如下面所指出的,我是一个白痴,只需要设置DataValueField和DataKeyField.

要使下拉列表绑定,我必须这样做:

SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'
Run Code Online (Sandbox Code Playgroud)

我没有立刻看到它的原因是因为它没有出现在我的intellisense中,但是当我手动键入它时,它起作用了.

.net c# asp.net data-binding drop-down-menu

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