C# 实体框架在N层体系结构中不起作用
我正在visual studio 2012上构建一个基于桌面的应用程序。实体框架未按C# 实体框架在N层体系结构中不起作用,c#,entity-framework,C#,Entity Framework,我正在visual studio 2012上构建一个基于桌面的应用程序。实体框架未按SaveChanges()的方式工作。如果它没有出现异常,似乎输入了数据,但在刷新数据库后,没有在其中添加额外的行 对于演示,我制作了两层架构 看法 数据访问层 我的看法是 public partial class Form1 : Form { public Form1() { InitializeComponent();
SaveChanges()
的方式工作。如果它没有出现异常,似乎输入了数据,但在刷新数据库后,没有在其中添加额外的行
对于演示,我制作了两层架构
- 看法
- 数据访问层
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyDAL dal = new MyDAL();
if (dal.Add(StudentName.Text, Contact.Text))
{
MessageBox.Show("Addition Successfull");
}
else
{
MessageBox.Show("Addition Failed");
}
}
}
我的数据访问层
public class MyDAL
{
public bool Add(string name, string contact)
{
using (var db = new Database1Entities())
{
Student s = new Student();
s.StudentName = name;
s.ContactNo = contact;
try
{
db.Students.Add(s);
db.SaveChanges();
return true;
}
catch (Exception ex)
{
return false;
}
}
}
}
我的数据库脚本是
CREATE TABLE [dbo].[Student] (
[Student_Id] INT IDENTITY (1, 1) NOT NULL,
[StudentName] VARCHAR (50) NULL,
[ContactNo] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Student_Id] ASC)
);
查看我的App.Config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="Database1Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Database1.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
DAL中我的App.Config是
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="Database1Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Database1.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
它正在按预期工作。这是对
|DataDirectory |
选项的简单误解
编译解决方案时,数据库将被复制到\Debug\| DataDirectory |
中,并在那里修改文件
您很可能正在查看解决方案(visual studio)中的文件,它没有被
Debug
目录中的可执行文件修改。因此,当Debug文件夹
出现在视图中以及DAL中时,如何获得修改后的数据库…非常感谢Erik
…你让我开心了一天:)……我用数据库的绝对路径更改了| DataDirectory |,并且它工作得很好预期