我使用以下方法“成功”将数据保存到数据库:
try
{
// Save the new Client now.
Profile profile = new Profile()
{
Salutation = Salutation,
FirstName = FirstName,
MiddleName = MiddleName,
LastName = LastName,
Gender = Gender,
DateOfBirth = DateOfBirth,
CompanyName = ClientCompanyName,
StreetAddress = StreetAddress,
Suburb = Suburb,
PostCode = PostCode,
State = State,
Country = Country,
ABN = ABN.ToString(),
ACN = ACN.ToString(),
TelephoneNumber = TelephoneNumber,
MobileNumber = MobileNumber,
EmailAddress = EmailAddress
};
database.Profiles.Add(profile);
database.SaveChanges();
Console.WriteLine("Client saved.");
}
catch (Exception exception)
{
Console.WriteLine(exception.Message + Environment.NewLine + exception.InnerException);
}
它说它已被保存。但是当我查看数据库时 - 什么都没有!
而且,当我尝试获取我刚添加的人的名字时,它会返回整个SELECT语句 - 而不是他们的名字:
var hisname = database.Profiles.Where(x => x.FirstName == "Jase");
是什么给出了?
这是一个C#Windows控制台应用程序。
相同的代码适用于我的网站。
当我尝试执行SELECT时,这是它返回给我的:
答案 0 :(得分:1)
您还没有向我们展示您的连接字符串,而且从您的问题来看,仅在从Visual Studio中或在VS外部运行您的应用时才会看到此行为尚不清楚。
如果您碰巧使用SQL Server Express 和AttachDbFileName=somename.mdf
方法,并且在Visual Studio中运行应用程序时发现此行为,请继续阅读。
整个用户实例和AttachDbFileName=
方法存在缺陷 - 充其量!在Visual Studio中运行应用程序时,它将复制.mdf
文件(从App_Data
目录到输出目录 - 通常是.\bin\debug
- 应用程序运行的地方)和最有可能,您的INSERT
工作正常 - 但您最后只是查看错误的.mdf文件!
如果你想坚持这种方法,那么尝试在myConnection.Close()
调用上设置一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf
文件 - 我几乎可以肯定你的数据在那里。
我认为真正的解决方案将是
安装SQL Server Express(你已经完成了)
安装SQL Server Management Studio Express
在 SSMS Express 中创建数据库,为其指定一个逻辑名称(例如MyDatabase
)
使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
其他所有内容都完全与以前相同......