小编Bra*_*lon的帖子

调用ToList()时内部LINQ查询的异常

昨天我正在研究一个代码重构,遇到一个异常,我真的找不到太多的信息.情况就是这样.

我们有一对EF实体,通过关系表有多对多的关系.有问题的对象看起来像这样,省去了不必要的位.

public partial class MasterCode
{
    public int MasterCodeId { get; set; }
    ...

    public virtual ICollection<MasterCodeToSubCode> MasterCodeToSubCodes { get; set; }
}

public partial class MasterCodeToSubCodes
{
    public int MasterCodeToSubCodeId { get; set; }
    public int MasterCodeId { get; set; }
    public int SubCodeId { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试对这些实体运行LINQ查询.我们在DTO中使用了很多LINQ投影.DTO和查询如下.masterCodeId是传入的参数.

public class MasterCodeDto
{
    public int MasterCodeId { get; set; }
    ...

    public ICollection<int> SubCodeIds { get; set; }
}

(from m in MasterCodes
where m.MasterCodeId == …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-entities entity-framework

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

在.NET 4.7.2中的WebForms中连接简单注入器

随着.NET 4.7.2的更改,现在可以在Web窗体中进行构造函数注入.我已经使用简单注入器使用Web窗体,但是想要一些输入,如果有任何"陷阱"我可能会丢失.

首先,我有自己的网页是从拍摄的注册这里.

public static void RegisterWebPages(this Container container)
{
    var pageTypes = 
        from assembly in BuildManager.GetReferencedAssemblies().Cast<Assembly>()
        where !assembly.IsDynamic
        where !assembly.GlobalAssemblyCache
        from type in assembly.GetExportedTypes()
        where type.IsSubclassOf(typeof(Page))
        where !type.IsAbstract && !type.IsGenericType
        select type;

    foreach (Type type in pageTypes)
    {
        var reg = Lifestyle.Transient.CreateRegistration(type, container);
        reg.SuppressDiagnosticWarning(
            DiagnosticType.DisposableTransientComponent,
            "ASP.NET creates and disposes page classes for us.");
        container.AddRegistration(type, reg);
    }
}
Run Code Online (Sandbox Code Playgroud)

当从上面的链接使用属性注入方法时,这很有效.我把它包括在这里是为了完整.

当我第一次连线时,有OutputCacheModule一个内部构造函数的问题.使用此处的代码,我能够解决该问题以及可能源自内部构造函数的任何其他问题.以下是该实现的完整性代码.

public class InternalConstructorResolutionBehavior : IConstructorResolutionBehavior
{
    private IConstructorResolutionBehavior original;

    public InternalConstructorResolutionBehavior(Container container)
    {
        this.original …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection webforms simple-injector

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

在EF模型的JSON序列化期间向嵌套对象添加属性

我们有一种情况是我们使用JSON来序列化EF模型以用于数据同步.为了使同步正常工作,我们需要模型的表名.这并不难,我们的代码已经提供给我们了.主要问题是在JSON中传输该数据.

例如,假设我们有以下模型.

public class Foo
{
    // ...
    public virtual ICollection<Bar> Bars { get; set; }
}

public class Bar
{
    // ...
    public virtual ICollection<FooBar> FooBars { get; set; }
}

public class FooBar
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我们通过includes下拉所有嵌套项,然后序列化它.问题是,我们需要将实体的表名作为元数据插入到JSON中,而不将其添加到模型本身.

例如,在上面的场景中,JSON看起来像

{
    "__tableName": "Foos",
    // ...
    "Bars": [
        {
           "__tableName": "Bars"
           // ...
           "FooBars": [
               {
                   "__tableName": "FooBars"
                   // ...
               }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我认为JSON.Net中的自定义序列化程序是最好的方法,但要么我没有插入正确的位置,要么它们不像我想的那样工作.

我尝试制作自定义,JsonConverter因为这似乎是处理自定义序列化方案的默认方式.但是,它似乎只是在要对序列化的基础对象上调用,而不是任何子对象.

我是否需要插入JSON.Net以实际放入此元数据?我在这个主题上找到的几乎所有内容都指向JsonConverter,但我不确定在这种情况下实际上我需要做什么.

我有一个想法是将对象加载到一个JObject中JsonConverter,然后自己走模型树并根据需要插入键,但我希望能比这更优雅的东西.

谢谢.

c# serialization entity-framework json.net

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

.NET 4.7.2 下使用 VB.NET 在 WebForms 中的构造函数注入

在 .NET 4.7.2 中,微软引入了在 WebForms 中使用构造函数注入的能力,通过使用这里HttpRuntime.WebObjectActivator看到的

给出的示例是在 C# 中。我正在开发一个正在现代化的旧版 VB.NET 应用程序。我们想在我们计划使用的属性注入上使用构造函数注入,因为它更规范。

但是,当我尝试为 WebForm 提供参数化构造函数时,出现以下错误。

(BC30387) 类“testpage_aspx”必须声明一个“Sub New”,因为它的基类“TestPage”没有可以不带参数调用的可访问“Sub New”。

这似乎是由于 VB.NET 处理构造函数和继承的方式。通过 VB.NET 处理构造函数的方式,甚至可能在 VB.NET WebForms 项目中使用参数化构造函数?

vb.net asp.net dependency-injection webforms

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