如何创建EntityConnection

时间:2011-05-23 20:48:20

标签: c# wpf entity-framework

我有一个包含多个项目的解决方案。

一个项目是我的DataAccess项目,其中定义了2个SQL CE数据库,一个用于本地用户,另一个用于公司数据,两者都具有类似的表结构。为每个数据库定义公共,静态,只读字符串,并且可以建立连接。

另一个项目是我的WPF项目,它将(最终)显示我的数据。为了在这里显示数据,我尝试创建一个实体上下文对象,但似乎没有任何工作。

什么阻止我访问其他项目中的数据? (目前,未定义错误状态'数据源')

我该如何解决?

AbcEntities abcContext;

public MainWindow() {
  InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e) {
  try {
    EntityConnection ec = new EntityConnection(DataClass.AbcConnectionString);
    abcContext= new AbcEntities(ec);
    listbox1.ItemsSource = from c in abcContext.Customers select c;
    abcCustomersBox.DisplayMemberPath = "Name";
  } catch (Exception err) {
    MessageBox.Show(err.Message);
  }
}

2 个答案:

答案 0 :(得分:2)

对于其他人,我发现了如何做到这一点。

在我的静态 DataClass 中,我创建了以下例程来为我生成实体连接字符串

static string BuildEntityConnString(string dbFileName, string resourceData, string password) {
  string resAll = @"res://*/";
  string dataSource = @"Data Source=|DataDirectory|\" + dbFileName;
  EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
  entityBuilder.Metadata = string.Format("{0}{1}.csdl|{0}{1}.ssdl|{0}{1}.msl", resAll, resourceData);
  entityBuilder.Provider = "System.Data.SqlServerCe.3.5";
  if (String.IsNullOrEmpty(password)) {
    entityBuilder.ProviderConnectionString = dataSource;
  } else {
    entityBuilder.ProviderConnectionString = dataSource + ";Password=" + password;
  }
  using (EntityConnection con = new EntityConnection()) {
    try {
      con.ConnectionString = entityBuilder.ToString();
      con.Open();
      Console.WriteLine("{0} Entity String created.", dbFileName);
      con.Close();
      return con.ConnectionString;
    } catch (Exception err) {
      Console.WriteLine(err);
    }
  }
  return null;
}

请注意,如果有任何错误,则返回NULL String。

如果有人想要使用它,他们应该在Exception上放置一个断点,抛出它,或以某种方式处理它。 Console.WriteLine()仅供我调试。

我为我的应用程序创建了实体连接字符串,如下所示:

public static readonly string EntityConnString =
  BuildEntityConnString("sqlCeDb.sdf", "myModel", "abc123~Funky");

希望别人能从中获得一些好处。

答案 1 :(得分:1)

可以在MSDN上找到有关如何创建EntityConnection的解释(更多示例,实际上):

http://msdn.microsoft.com/en-us/library/bb738533.aspx

看起来与你的相似。