使用LINQ插入数据库

时间:2014-05-28 12:59:47

标签: c# sql database

我的数据库被检测到有问题。我最近添加了一个数据库,如下图所示,我的查询看起来正确(它下面的sql是linq要替换的)但是我不确定为什么Visual Studio没有检测到我的数据库。当我尝试添加

using System.Data.Entities

我无法找到它,而且我还没有使用它。

我目前使用的是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

以下屏幕截图可帮助您了解我想说的内容(在新标签页中打开图片以100%的比例查看):

enter image description here

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

你有几个问题:

  1. 您尚未将模型添加到项目中。我在{1}}的解决方案资源管理器中看不到任何与ORM相关的文件。

  2. 添加模型后,假设SqlIntegrationWithVs不是BloodBank类的属性;因此,它仍然不会在当前的背景下存在。

    通常,ORM将表映射类放在单独的命名空间中,例如Register,并且允许您访问表数据的对象放在特定的类中,因此您最终会得到一些东西像:

    BloodBankDatabase.BloodBanks
  3. 另外,看看你的代码,你似乎并不了解C#是如何工作的。例如:

    • 您不应该在using BloodBankDatabase; using (var context = new DatabaseContext(connectionString)) { var returnedPerson = from loginDetails in BloodBank where loginDetails.Username == usersInput select loginDetails.Username; } 内拨打cmd.Dispose(),因为using (SqlCommand cmd = ...) { }已经这样做了。

    • using实施SqlDataReader,因此您已经忘记了IDisposable周围的事件。

    • 你不应该抓住using () { }

    • Exception在这种背景下没有意义;你确定你理解lambda表达式吗?

    • Don&#t; t where Username == usersInput。相反,请将变量尽可能靠近您首先使用它的位置。

    • 在使用之前验证您的输入。如果bool usernameTaken = false;为空,会发生什么?还是太长了?

    你如何改进?

    1. Stack Oveflow不是代码审查网站。一旦您的代码工作(并且只有那时),您可能有兴趣将其提交到https://codereview.stackexchange.com/

    2. 您可能也有兴趣阅读一本书来学习C#。 C# in Depth by Jon Skeet事实上是任何C#初学者应阅读的书。

    3. 如果您在公司工作,请坚持为每行承诺的代码进行代码审查。尝试让更有经验的开发人员审核您的代码。如果没有,请找一位准备审核您代码的人(朋友,老同事)。

    4. 在付费版本的Visual Studio中提供的
    5. Code analysis将指出遗忘的userInput块等问题。这比在MSDN中查看您使用的每个课程以查看它是否实施using () { }要容易得多。

    6. StyleCop是您可能感兴趣的另一个工具:它本身不会发现错误,但会强制您在代码库中使用统一的样式。

答案 1 :(得分:0)

尝试添加

using System.Linq;

在使用声明中。