EntityFramework返回:EntityReference只能有一个相关对象,但查询返回了多个相关对象

时间:2015-04-23 20:01:58

标签: c# entity-framework ef-database-first entity-framework-6.1 database-first

我创建了一个(虚拟)数据库视图,名为; vContact和一个返回与视图相同类型的存储过程(如果我应该做我需要的话,视图会太复杂)。当我调用存储过程时,我得到一个ContactI对象,其中CompanyId已填充但Company对象显示(在Visual Studio中观察时):

发生了关系多重性约束违规:EntityReference只能有一个相关对象,但查询返回了多个相关对象。这是一个不可恢复的错误。

我正在使用数据库优先的approch ...我认为我必须做一些流畅的配置?我认为这是关于我正在使用“封装”视图类,因此反转对象的类型不同?

以下是我的目标:

[Table("vContact")]
public class ContactView : Contact
{
    // …
}

[Table("Contact")]
public class Contact
{
    [Key]
    public Guid Id { get; set; }

    // …

    [Required]
    public int CompanyId { get; set; }
    public virtual Company Company { get; set; }

    public virtual ICollection<Activity> Activities { get; set; }
}

[Table("Company")]
public class Company
{
    [Key]
    public int Id { get; set; }

    // …

    public virtual ICollection<Contact> Contacts { get; set; }

    public virtual ICollection<Activity> Activities { get; set; }
}

[Table("Activity")]
public class Activity
{
    [Key]
    public Guid Id { get; set; }

    // …

    [Required]
    public int CompanyId { get; set; }
    public virtual Company Company { get; set; }
}

我的目标是获取一个ContactView对象,其中包含填充联系人和活动,但公司只需要包含“基础” - 而不是所有引用公司的联系人和活动。

但是,当使用另一个存储过程的vCompany视图查询公司的活动和活动时,属性必须存在于公司对象上。

PS。我获得了联系人和活动的等效视图和存储过程

0 个答案:

没有答案