Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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#_Sql Server_Entity Framework - Fatal编程技术网

C# 是否可以使用实体框架并将对象关系保留在代码中,而不保留在数据库中

C# 是否可以使用实体框架并将对象关系保留在代码中,而不保留在数据库中,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我很难确定自己的处境,所以请耐心等待。要么是我遇到了一个没有人在博客上谈论的情况,要么是我对这些概念缺乏理解,在我的头脑中制造了一个问题 我有一个数据库,这是一个混乱的东西,数据库所有者希望保持这种方式。我所说的混乱是指它没有规范化,没有定义关系,尽管它们确实存在 我想使用EF,我想通过减少数据库调用来优化我的代码 作为一个简化的示例,我有两个表,没有这样设置的关系: 表:人类 HumanId、HumanName、FavoriteFoodId、LeastFavoriteFoodId、LastFo

我很难确定自己的处境,所以请耐心等待。要么是我遇到了一个没有人在博客上谈论的情况,要么是我对这些概念缺乏理解,在我的头脑中制造了一个问题

我有一个数据库,这是一个混乱的东西,数据库所有者希望保持这种方式。我所说的混乱是指它没有规范化,没有定义关系,尽管它们确实存在

我想使用EF,我想通过减少数据库调用来优化我的代码

作为一个简化的示例,我有两个表,没有这样设置的关系:

表:人类 HumanId、HumanName、FavoriteFoodId、LeastFavoriteFoodId、LastFoodEatenId

表:食物 FoodId、FoodName、FoodProperty 1、FoodProperty 2

我想编写一个EF数据库调用,它将为每个相关的食物项返回一个human和一个full对象

首先,有可能做到这一点吗

第二,如何


无聊的背景信息:一位超级sql开发人员编写了一个查询,在20毫秒内返回21个表,其中总共包含1401列。这将变成一个xml文档,供前端开发人员绑定。我想改变我们使用对象的技术,从而减少从字段到xml的手工编码和映射(更不用说处理空字符串和空字符串等),并创建一个类型安全的编译时环境。很遗憾,我们不允许更改数据库或添加关系

如果我理解您的意思是正确的,您最好使用:

  • 您可以定义对象(实体)人类和食物
  • 在代码中建立它们之间的关系,即使它们在DB中没有外键
  • 使用linq到sql查询它们

  • 是的,您可以在一次调用中选择所有相关信息。

    您可以使用实体框架定义代码中的关系。在您的情况下,您可以手动定义实体,或者使用工具从现有数据库对EF模型进行反向工程。visualstudio内置了一些对这一功能的支持,并且有类似的VS扩展提供了这一功能


    至于使用EF对数据库进行一次调用,您可能需要创建一个存储过程或一个视图来返回所需的所有信息。使用启用延迟加载的标准设置,EF将调用数据库并根据需要填充数据。

    我担心一旦我进行更改,EF可能会尝试更新连接的数据库。如何确保我的代码不会修改我的数据库?@adamheg,你只需要使用默认的数据库初始值设定项,你的代码就不会修改数据库