Как создать EntityConnection - PullRequest
0 голосов
/ 24 мая 2011

У меня есть решение с несколькими проектами.

Один проект - это мой проект DataAccess, в котором определены 2 базы данных SQL CE, одна для локальных пользователей и одна для данных компании, обе с похожей структурой таблиц. Публичные, статические, только для чтения строки определены для каждой базы данных, и могут быть установлены подключения.

Другим проектом является мой проект WPF, который (в конечном итоге) отобразит мои данные. Чтобы отобразить данные здесь, я попытался создать объект Entity Context, но, похоже, ничего не работает.

Что мешает мне получить доступ к моим данным в другом проекте? (В настоящее время состояние ошибки 'источник данных' не определено)

Как мне это исправить?

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 ]

2 голосов
/ 25 мая 2011

Для других я узнал, как это сделать.

В моем статическом DataClass я создал следующую подпрограмму для генерации для меня строки Entity Connection :

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;
}

Обратите внимание, что если есть какая-либо ошибка, возвращается пустая строка.

Если кто-то хочет использовать это, он должен либо установить точку останова в исключении, бросить его,или справиться с этим каким-либо образом.Console.WriteLine() был только для меня, чтобы отладить через это.

Я создал Строки подключения сущностей для своих приложений следующим образом:

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

Надеюсь, что другие получат некоторый пробегиз этого.

1 голос
/ 28 мая 2011

Объяснение (на самом деле больше примера) того, как создать EntityConnection, можно найти на MSDN здесь:

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

Выглядит очень похоже на то, что у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...