C# Can';t更新/添加/删除实体框架
我处理的行为有点奇怪,我可以从数据库中获取信息,但不能添加/编辑或删除。 我没有收到任何例外。它不会更新我的数据库:/ 有什么建议吗?我尝试过在没有增量的情况下使用ID,但得到了相同的结果 我甚至尝试过用一个简单的2列数据库制作一个新的手机项目,但它仍然不会更新,对我可能做错的地方有什么建议吗 谢谢大家! Database1.mdf=>accountsC# Can';t更新/添加/删除实体框架,c#,sql,forms,entity-framework,mdf,C#,Sql,Forms,Entity Framework,Mdf,我处理的行为有点奇怪,我可以从数据库中获取信息,但不能添加/编辑或删除。 我没有收到任何例外。它不会更新我的数据库:/ 有什么建议吗?我尝试过在没有增量的情况下使用ID,但得到了相同的结果 我甚至尝试过用一个简单的2列数据库制作一个新的手机项目,但它仍然不会更新,对我可能做错的地方有什么建议吗 谢谢大家! Database1.mdf=>accounts CREATE TABLE [dbo].[Accounts] ( [AccountID] INT IDENTITY (1
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)
);
表格1.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="data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\AccountsDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" 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="data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=E:\Porjects\DB\EFtesting\WindowsFormsApplication3\WindowsFormsApplication3\AccountsDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我不明白为什么| DataDirectory |会导致这种奇怪的行为?它不应该将目录映射到项目根目录吗
谢谢大家 我打赌你的问题在于你没有指向正确的数据库。根据您编写代码的方式,您的代码可能在localDB中创建为新数据库,并在该数据库中执行操作 请确保在实例DbContext时已配置并使用了正确的数据库连接。考虑到它取决于
app/web.config
连接字符串和EF配置上的配置,以及传递给DbContext
构造函数的参数(如果有)
请阅读文档以了解更多信息。还有这个:“我敢打赌”-那么,你不想发表评论来证实这一点吗?@Jonathan那很好,但如果这是真正的问题,那里有几十个副本。@CodeCaster一开始我就想到了,但我99%肯定他的问题,所以我没有。由于这种情况经常发生,即使这不是本案的正确答案,我相信这将是其他人发现同样问题的正确答案。谢谢你的建议。@CodeCaster如果那边有重复的问题,请将问题标记为重复的,例如,我将跟随你。我无法将此问题标记为重复问题,因为没有足够的信息进行故障排除。请阅读并在问题中包含所有相关信息。显示连接字符串,说明.mdf文件的生成操作和“复制到输出”设置是活动的,显示如何检查数据库中的记录,并三次检查应用程序正在使用的文件中是否实际查找。