Да, это на самом деле. Вы можете предоставить файл сопоставления при создании экземпляра DataContext следующим образом:
var dataContext = new DataContext("connectionstring", entity.map);
Этот файл может быть автоматически сгенерирован с помощью SqlMetal.exe:
sqlmetal /server:servername /database:databasename /context:nameofdatacontext /Map:Entity.Map /code:Entity.code
Так что, если вы будете придерживаться соглашения о присвоении свойств одинаковым значениям в db и ities, вы будете в рабочем состоянии.
Кроме того, вы можете использовать шаблоны T4 для генерации вашего datacontext, также создав файл dbml.
Я создал файл .bat, который я запускаю из обозревателя решений с powershell.exe, который
- запускает sqlmetal.exe с параметром карты
- запускает sqlmetal.exe с параметром dbml
- и запускает TextTransform.exe на моем шаблоне T4, который генерирует мой datacontex.
Но вам, вероятно, следует использовать EntitySet<T>
и EntityRef<T>
в вашей сущности, если вы не хотите, чтобы отсутствовали обычные функции, такие как lazyload. Это, очевидно, означает, что у вас не будет чистых POCO, но если вы можете с этим смириться, это довольно небольшой компромисс.