c# - 如果使用 SqlServer CE 4.0 执行代码优先,数据库的位置是什么?

标签 c# database winforms entity-framework entity-framework-4

我正在学习使用控制台应用程序进行 Code First 开发。在许多示例中,包括 Scott Gu 的帖子,他们建议使用 Sql Server CE 4.0 并将其设置为代码自动创建数据库。

我正在开发一个控制台应用程序,并希望使用管理工具(例如 management studio 或 linqpad)检查数据库。创建的 sdf 文件的位置是什么?

我创建了一个 App.Config 并将以下内容放入其中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add
      name="NerdDinners"
      providerName="System.Data.SqlServerCe.4.0"
      connectionString="Data Source =|DataDirectory|NerdDinners.sdf"/>
  </connectionStrings>
</configuration>

但是,并没有创建 NerdDinner,而是在 SQLExpress 中创建了一个数据库。我似乎在这里混淆了一些东西。

最佳答案

这取决于您在 app.config 文件中设置的连接字符串。在大多数情况下 (DataDirectory) 数据库文件将在 Debug\bin 文件夹(winform 应用程序)中创建。

示例应用程序:(添加 System.ComponentModel.DataAnnotations.dllEntityFramework.dll 的引用)

public class Employee
{
    [Key]
    public int EmpNo { get; set; }
    public string Name { get; set; }
}
public class Test : System.Data.Entity.DbContext
{
    public System.Data.Entity.DbSet<Employee> Emps { get; set; }
}

app.config(连接字符串的名称必须匹配Context类的名称)

<configuration>
<connectionStrings>
  <add  name="Test"
          connectionString="Data source=|DataDirectory|Test.sdf" 
          providerName="System.Data.SqlServerCe.4.0"
        />
</connectionStrings>
</configuration>

添加一条记录,

Test db = new Test();

db.Emps.Add(new Employee() { EmpNo = 1, Name = "Mr.X" });
db.SaveChanges();

关于c# - 如果使用 SqlServer CE 4.0 执行代码优先,数据库的位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643323/

相关文章:

c# - 如何删除 DataGridView 中的最后一行/页脚行?

c# - 在ms visual studio中使用是否必须单独安装ms sql server 2005

C# - XmlNamespaceManager 存在于 'System.Xml.ReaderWriter' (...) 和 'System.Xml (...)'

c# - 我可以定义 2 个名称相同但参数不同的委托(delegate)吗?

c# - 创建 Entity Framework 模型时忽略数据库默认值

python - postgresql:共享内存不足?

sql-server - access和sql server实时同步

c# - 如何实现用户之间的消息传递系统?

.net - 如何指定窗体打开时应关注哪个控件?

vb.net - 如何从结果集中搜索结果集