2

我正在“成功”地将数据保存到数据库中,使用:

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 时返回给我的内容:

在此处输入图像描述

4

1 回答 1

1

您还没有向我们展示您的连接字符串,从您的问题来看,尚不清楚您是否仅在从 Visual Studio 内部或在 VS 外部运行应用程序时才看到此行为。

如果您碰巧使用 SQL Server Express和该AttachDbFileName=somename.mdf方法,并且在 Visual Studio 中运行应用程序时观察到此行为,请继续阅读。

整个用户实例和AttachDbFileName=方法是有缺陷的——充其量!在 Visual Studio 中运行您的应用程序时,它将围绕.mdf文件进行复制(从您的App_Data目录到输出目录 - 通常.\bin\debug是您的应用程序运行的位置),并且很可能,您的INSERT工作正常 - 但您只是看错了 . mdf文件到底!

如果您想坚持使用这种方法,请尝试在myConnection.Close()调用上设置断点 - 然后.mdf使用 SQL Server Mgmt Studio Express 检查文件 - 我几乎可以肯定您的数据在那里。

我认为真正的解决方案是

  1. 安装 SQL Server Express(反正你已经完成了)

  2. 安装 SQL Server Management Studio Express

  3. 在SSMS Express中创建您的数据库,给它一个逻辑名称(例如MyDatabase

  4. 使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
    

    其他一切都和以前完全一样......

于 2013-06-19T20:37:03.033 回答