Ответ 1
Технически, это возможно, но я бы не рекомендовал его. Намного лучше всего использовать код - сначала по всем направлениям. Да, по иронии судьбы, вы можете использовать "code-first" с существующей базой данных.
Просто создайте POCO, которые соответствуют таблицам в вашей существующей базе данных. Если ваш POCO не назван так же, как и ваша таблица (не все имена таблиц будут действительными или соответствующими именами классов), вы можете использовать атрибут Table
, чтобы явно указать EF, в какой таблице работает ваш POCO:
[Table("SomeTable")]
public class MyAwesomeEntity
{
...
}
Затем вам понадобится отдельный контекст для этой существующей базы данных и любых объектов, которые принадлежат ей. Все, что вам нужно сделать, это 1) рассказать, какую строку подключения он должен использовать и 2) отключить инициализацию базы данных, поэтому EF не пытается создать базу данных.
public MyExistingDatabaseContext : DbContext
{
public MyExistingDatabaseContext()
: base("MyExistingDatabaseConnectionStringName")
{
Database.SetInitializer<MyExistingDatabaseContext>(null);
}
// DbSets here
}
И что это. Всякий раз, когда вам нужно работать с сущностью из этой существующей базы данных, просто обновляйте этот контекст или используйте его каким-то другим способом, например, через контейнер DI (инъекции зависимостей) и отправляйтесь в город.