为什么导航属性''在类型'上声明'已经配置了冲突的多重性.出现错误?

use*_*998 3 c# mapping entity-framework associations one-to-many

我有Asp_Users桌子和Resource桌子.在实体框架世界中,我有一个Asp_UsersPOCO和一个ResourcePOCO.此外,ResourcePOCO是抽象的,并且是每层次表层次模型的一部分.Table-per -ierarchie 模型具有抽象ResourcePOCO和几个POCO,ConcreteILCResourcePOCO和SectionResourcePOCO.从Asp_UsersPOCO(单面)到ResourcePOCO(多面)有一对多(1到0 ......)的关系.

这是我的aspnet_Users POCO的相关部分:

public partial class aspnet_Users
{
    public aspnet_Users() { }

    public virtual System.Guid ApplicationId { get; set; }
    public virtual System.Guid UserId { get; set; }
    public virtual string UserName { get; set; }
    public virtual string LoweredUserName { get; set; }
    public virtual string MobileAlias { get; set; }
    public virtual bool IsAnonymous { get; set; }
    public virtual System.DateTime LastActivityDate { get; set; }

    public virtual ICollection<Resource> associatedResources { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我对Asp_Users的映射配置

public class Aspnet_UsersMap : EntityTypeConfiguration<PerlsData.Domain.aspnet_Users>
{
    public Aspnet_UsersMap()
    {
        this.ToTable("aspnet_Users", schemaName: "dbo");

        this.HasKey(u => u.UserId);

        this.Property(u => u.UserId)
            .HasColumnName("UserId")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        this.HasOptional(u => u.associatedResources);
    }
} 
Run Code Online (Sandbox Code Playgroud)

这是我的抽象Resource POCO类的相关部分:

public abstract class Resource
{   
    public Resource(){
       // associatedPerspectives = new HashSet<Perspective>();
    }

    public virtual System.Guid ResourceDatabaseID { get; set; }
    public virtual string ResourceName { get; set; }
    public virtual string DescriptionOfResource { get; set; }
    public virtual System.Guid UserId { get; set; }
    public virtual Nullable<System.Guid> DepartmentDatabaseID { get; set; }
    public virtual string ResourceStatus { get; set; }
    public virtual Nullable<short> isRemoved { get; set; }

    public virtual Department Department { get; set; }

    public virtual System.Guid UserId { get; set; }
    public virtual aspnet_Users aspnet_Users { get; set; }


    public virtual ICollection<ResourceOverToILCResourcesBridge> associatedResourceOverToILCResourcesBridgeEntry { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的资源的映射配置:

public class ResourceMap : EntityTypeConfiguration<Resource>
{

    public ResourceMap()
    {
        this.ToTable("Resources", schemaName: "dbo");

        this.Property(r => r.ResourceDatabaseID)
            .HasColumnName("ResourceDatabaseID");

        this.HasKey(r => r.ResourceDatabaseID);

        this.Property(x => x.ResourceDatabaseID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        // .StoreGeneratedPattern = StoreGeneratedPattern.Identity;
        this.Property(r => r.ResourceName)
            .HasColumnName("ResourceName");

        this.Map<PerlsData.Domain.OtherItem>(m => m.Requires("discriminator").HasValue("otheritems"))
        .Map<PerlsData.Domain.Audioitem>(m => m.Requires("discriminator").HasValue("audioitems"))
        .Map<PerlsData.Domain.Imageitem>(m => m.Requires("discriminator").HasValue("imageitems"))
        .Map<PerlsData.Domain.Videoitem>(m => m.Requires("discriminator").HasValue("videoitems"))
        .Map<PerlsData.Domain.UriItem>(m => m.Requires("discriminator").HasValue("uriitems"))
        .Map<PerlsData.Domain.Documentitem>(m => m.Requires("discriminator").HasValue("documentitems"))
        .Map<PerlsData.Domain.DatabaseFileItem>(m => m.Requires("discriminator").HasValue("databasefileitems"));

        this.HasOptional(res => res.associatedResourceOverToILCResourcesBridgeEntry);

        this.HasRequired(res => res.aspnet_Users)
            .WithMany(u => u.associatedResources)
            .HasForeignKey(res => res.UserId);
    }
}
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么我收到以下错误吗?

在'PerlsData.Domain.aspnet_Users'类型上声明的导航属性'associatedResources'已配置了冲突的多重性.

请解释为什么在POCO类中创建映射后它仍为NULL.

在此输入图像描述

SLa*_*aks 6

this.HasOptional(u => u.associatedResources);
Run Code Online (Sandbox Code Playgroud)

那是错的. HasOptional手段0..1.
你想要的HasMany().

事实上,你可以完全摆脱这条线; EF可以从房产中找到它.