Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何首先在实体框架代码中设置0..*关系?_C#_Entity Framework_Relationships_Object Relationships - Fatal编程技术网

C# 如何首先在实体框架代码中设置0..*关系?

C# 如何首先在实体框架代码中设置0..*关系?,c#,entity-framework,relationships,object-relationships,C#,Entity Framework,Relationships,Object Relationships,我有两个类的下一个代码: public class Object { public int ObjectID { get; set; } public int Object2ID { get; set; } public virtual Object2 Object2 { get; set; } } public class Object2 { public int Object2ID { get; set; } public virtual ICo

我有两个类的下一个代码:

public class Object
{
    public int ObjectID { get; set; }

    public int Object2ID { get; set; }
    public virtual Object2 Object2 { get; set; }
}

public class Object2
{
    public int Object2ID { get; set; }

    public virtual ICollection<Object> Objects { get; set; }
}
公共类对象
{
public int ObjectID{get;set;}
public int Object2ID{get;set;}
公共虚拟对象2对象2{get;set;}
}
公共类对象2
{
public int Object2ID{get;set;}
公共虚拟ICollection对象{get;set;}
}
我知道使用实体框架,这将创建一对多关系,但我想知道的是,如何将其转换为零对多关系


我是实体框架的新手,找不到任何直接的答案。

对于实体框架中的0对多关系,外键应为空

public int? Object2ID { get; set; }

另一种方法是使用Fluent API:

public class YouDbContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder mb)
    {
        mb.Entity<Object2>
            .HasMany(o1 => o1.Objects)
            .WithOptional(o2 => o2.Object2);

        base.OnModelCreating(mb);
    }
}
公共类YouDbContext:DbContext
{
模型创建时受保护的覆盖无效(DbModelBuilder mb)
{
mb.实体
.HasMany(o1=>o1.Objects)
.with可选(o2=>o2.Object2);
基于模型创建(mb);
}
}

我是否需要将公共虚拟对象2 Object2{get;set;}也设置为可空,还是仅将键设置为可空?否。作为一个类,如果需要,Object2可以设置为空。@user355261它“本质上”是可空的。顺便说一句,类对象中不需要有Object2ID。它仍然是一对多关系,区别只是在依赖项上有必需的主体或可选的主体。我同意,我看不出你怎么能有一个0对任何东西的关系,如果某个东西有0,那么它就不能与任何东西相关。仅供参考,不使用的正常命名法
因为它是一个特殊字符,某些系统可能不喜欢Unicode。通常您会将其表示为
0..*
,这是您在大多数文档参考中看到的内容。