Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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# 代码首先忽略虚拟属性_C#_Entity Framework_Code First - Fatal编程技术网

C# 代码首先忽略虚拟属性

C# 代码首先忽略虚拟属性,c#,entity-framework,code-first,C#,Entity Framework,Code First,我有我的数据库,它包含实体之间的一些关系。例如房屋房间: public class House{ [Key] public int Id{get;set;} public string Address{get;set;} public virtual IList<Room> Rooms{get;set;} } public class Room{ [Key] public int Id{get;set;} public str

我有我的数据库,它包含实体之间的一些关系。例如房屋房间:

public class House{
    [Key]
    public int Id{get;set;}
    public string Address{get;set;}
    public virtual IList<Room> Rooms{get;set;}
}

public class Room{
    [Key]
    public int Id{get;set;}
    public string RoomName{get;set;}
    [ForeignKey("House")]
    public int HouseId{get;set;}
    public virtual House House{get;set;}
}
如果我尝试序列化它,我有房间,房子不为空,里面有一个房间列表,一个房子,一个房间列表。。。等等

我希望房间仅选择非虚拟属性,因此,例如房屋ID,而不是房屋本身。。。我怎样才能做到这一点

编辑:
我忘了你说过我有时可能需要包括那些嵌套的实体。例如,有时我可能需要检查房间内的房屋内的财产。但有时并非如此。是否有一种方法可以选择每次?

最简单的方法可能是创建用于序列化的DTO模型。这也隐藏了数据库结构。有关更多信息,请参见此:可能重复的我怀疑延迟加载在序列化时对您造成了影响,因此您应该使用ctx.Configuration.LazyLoadingEnabled=false禁用懒散加载;然后你会得到你想要的结果。我的问题是(可能)有时我可能需要这些属性,最好是将它们排除在外,并最终手动填充它们,或者是否有办法决定是否每次都包含它们?@Sami也许你的答案就是我正在寻找的解决方案。如果有一种“更简单”的方法,比如每次选择包含或不包含哪个属性,我会更喜欢,但其他方式您将是解决方案:)
Room room = ctx.Room.Where(x => x.Id == myId).FirstOrDefault();