为可空外键创建导航属性 - c#

我正在使用EntityFramework v4.3.1,并通过从DbContext继承并覆盖OnModelCreating()通过代码构建模型。我有一个名为“公司”的表和一个名为“消息”的表。 Messages表具有可为空的外键Messages.CompanyId。设置此选项后,特定消息将与特定公司相关联。如果此字段为空,则消息将与所有公司相关联。

我的问题是我不知道如何在OnModelCreating()方法中表达此行为。如果我做:

modelBuilder.Entity<Message>().HasRequired(o => o.Company).WithMany(o => o.Messages).Map(o => o.MapKey("CompanyId"));

我成功地获得了Company的导航属性,这样我就可以进行诸如TestCompany.Messages之类的调用,并获得与特定公司相关的消息列表。但我还需要返回所有空消息。

如何做到这一点?

参考方案

如果要查询与任何公司都不相关的消息,则需要在CompanyId实体类中对标量属性Message进行建模。

public class Message
{
    //other porperties

    public int? CompanyId { get; set; }
}

并使用HasOptional而不是HasRequired配置关系。

modelBuilder.Entity<Message>()
    .HasOptional(o => o.Company).WithMany(o => o.Messages)
    .HasForeignKey(m => m.CompanyId);

然后您可以使用查询

var messages = db.Messages.Where(m => m.CompanyId == null);

如何以编程方式将ListView滚动到最后一个元素-Compact Framework - c#

我正在使用Windows Mobile 6.1上的3.5 Compact Framework开发应用程序。我有一个ListView,添加项目时想自动滚动此列表。我能怎么做? 参考方案 listView.EnsureVisible(listView.Items.Count - 1);

模块化C#Compact Framework 2.0应用程序 - c#

我们目前正在开发新的手持软件。我无法讨论应用程序的性质,因此我将使用一个示例。我们正在设计用于管理学校的手持软件。我们希望对系统的各个方面进行模块化,以便不同的学校可以使用不同的功能。我们的系统将从主菜单和登录屏幕开始。我希望这可以作为系统的基础,并成为要添加模块的位置。即我将有一个名为SchoolPda的项目。然后,我想拥有不同的模块。即,我想要一个注册模…

Entity Framework DbEntityEntry>'不包含Where的定义 - c#

此代码狙击手来自Adding CreatedDate to an entity using Entity Framework 5 Code First public override int SaveChanges() { DateTime saveTime = DateTime.Now; foreach (var entry in this.ChangeT…

实体框架代码“首次日期”字段创建 - c#

我正在使用Entity Framework Code First方法创建数据库表。以下代码在数据库中创建一个DATETIME列,但我想创建一个DATE列。[DataType(DataType.Date)] [DisplayFormatAttribute(ApplyFormatInEditMode = true, DataFormatString = …

如何在Zend Framework 2中配置依赖注入? - php

免责声明:我是Zend的完全菜鸟。我正在评估Zend Framework 2的工作状况,并尝试将其配置为与ZfTwig一起使用以进行模板制作。 (请参见此处:https://github.com/mtymek/ZfTwig)我通过了配置的Step 3,但是我不知道Step 4。我尝试将以下内容放在application.config中,但效果不好。我该放在哪…