【问题标题】:Can't update/add/remove from/to Entity Framework无法从/向实体框架更新/添加/删除
【发布时间】:2016-02-04 15:33:11
【问题描述】:

我正在处理的行为有点奇怪,我可以从数据库中获取信息,但不能添加/编辑或删除。 我没有收到任何异常。它只是不会更新我的数据库:/

有什么建议吗?我曾尝试使用不增加 ID 的 ID,但我得到了相同的结果。

我什至尝试用一个简单的 2 列数据库制作一个手机新项目,但它仍然不会更新,有什么建议我可能做错了吗?

谢谢!

Database1.mdf => 帐户

CREATE TABLE [dbo].[Accounts] (
    [AccountID] INT          IDENTITY (1, 1) NOT NULL,
    [LastName]  VARCHAR (30) NULL,
    [FirstName] VARCHAR (30) NULL,
    [Password]  VARCHAR (30) NULL,
    [Email]     VARCHAR (50) NULL,
    PRIMARY KEY CLUSTERED ([AccountID] ASC)
);

Form1.cs

using System;
using System.Data.Entity;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication2 {
    public partial class Form1: Form {
        public Database1Entities AccountsContext = new Database1Entities();

        public Form1() {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) {
            using (Database1Entities context = new Database1Entities()) {
                Account newAccount = new Account
                {AccountID = 5, Email = "a", FirstName = "a", LastName = "a", Password = "a"};
                context.Accounts.Add(newAccount);
                context.SaveChanges();
            }

            using (var context = new Database1Entities()) {
                Account newAccount = new Account
                {Email = "b", FirstName = "b", LastName = "b", Password = "b", AccountID = 6};
                context.Entry(newAccount).State = EntityState.Added;
                context.SaveChanges();
            }

            AccountsContext.Accounts.Add(new Account
            {Email = "c", FirstName = "c", LastName = "c", Password = "c", AccountID = 7});
            //Account newAccount = new Account { Email = "a", FirstName = "a", LastName = "a", Password = "a"};
            //DB.Accounts.Attach(newAccount);
            AccountsContext.SaveChanges();
            string str = null;
            foreach (Account account in AccountsContext.Accounts.ToList()) {
                str = str + account.AccountID;
            }
            label1.Text = str;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
            AccountsContext.SaveChanges();
        }
    }
}

编辑:

旧连接字符串 =>

<add name="AccountsDBEntities" connectionString="metadata=res://*/model1Accounts1.csdl|res://*/model1Accounts1.ssdl|res://*/model1Accounts1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\AccountsDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

新建连接字符串 =>

<add name="AccountsDBEntities" connectionString="metadata=res://*/model1Accounts1.csdl|res://*/model1Accounts1.ssdl|res://*/model1Accounts1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=E:\Porjects\DB\EFtesting\WindowsFormsApplication3\WindowsFormsApplication3\AccountsDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我不明白为什么 |DataDirectory|导致这种奇怪的行为?它不应该将目录映射到项目根目录吗?

谢谢大家!

【问题讨论】:

  • 请阅读How to Ask 并在您的问题中包含所有相关信息。显示您的连接字符串,提及 .mdf 文件的哪些构建操作和“复制到输出”设置处于活动状态,显示您如何检查数据库中的记录,并三重检查您实际上是在查看您的文件应用程序正在使用。

标签: c# sql forms entity-framework mdf


【解决方案1】:

我敢打赌,您的问题是您没有指向正确的数据库。根据您编写代码的方式,您的代码可能会在 localDB 中创建一个新数据库并在该数据库中进行操作。

请确保您在实例化 DbContext 时已配置并使用正确的数据库连接。考虑到它取决于app/web.config 连接字符串和EF 配置的配置,以及传递给DbContext 构造函数的参数(如果有)。

请阅读DbContext constructor 文档以获取更多信息。还有这个:Connections and Models

【讨论】:

  • “我打赌” - 那么你不想发表评论来验证这一点吗?
  • @Jonathan 很好,但 如果 那是实际问题,那里有几十个重复项。
  • @CodeCaster 我一开始就想到了,但我 99% 确定是他的问题,所以我没有。由于这种情况在很多情况下都会发生,即使这不是这个案例的正确答案,我相信这将是可能其他人发现同样问题的正确答案。感谢您的建议。
  • @CodeCaster 如果那里有重复的问题,请将问题标记为重复,我会关注你的。
  • C# mdf database doesn't update on program startup, SQL insert query in C# does not update database, Database isn't updating 例如。我无法将此问题标记为重复,因为没有足够的信息来解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多