我的数据库被检测到有问题。我最近添加了一个数据库,如下图所示,我的查询看起来正确(它下面的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%的比例查看):
提前感谢您的帮助!
答案 0 :(得分:3)
你有几个问题:
您尚未将模型添加到项目中。我在{1}}的解决方案资源管理器中看不到任何与ORM相关的文件。
添加模型后,假设SqlIntegrationWithVs
不是BloodBank
类的属性;因此,它仍然不会在当前的背景下存在。
通常,ORM将表映射类放在单独的命名空间中,例如Register
,并且允许您访问表数据的对象放在特定的类中,因此您最终会得到一些东西像:
BloodBankDatabase.BloodBanks
另外,看看你的代码,你似乎并不了解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;
为空,会发生什么?还是太长了?
你如何改进?
Stack Oveflow不是代码审查网站。一旦您的代码工作(并且只有那时),您可能有兴趣将其提交到https://codereview.stackexchange.com/
您可能也有兴趣阅读一本书来学习C#。 C# in Depth by Jon Skeet事实上是任何C#初学者应阅读的书。
如果您在公司工作,请坚持为每行承诺的代码进行代码审查。尝试让更有经验的开发人员审核您的代码。如果没有,请找一位准备审核您代码的人(朋友,老同事)。
Code analysis将指出遗忘的userInput
块等问题。这比在MSDN中查看您使用的每个课程以查看它是否实施using () { }
要容易得多。
StyleCop是您可能感兴趣的另一个工具:它本身不会发现错误,但会强制您在代码库中使用统一的样式。
答案 1 :(得分:0)
尝试添加
using System.Linq;
在使用声明中。