LINQ к SQL не Может создать базу данных [Полномочия Схемы]

Просто ты не можешь. C # создает промежуточный язык, который интерпретируется виртуальной машиной (.NET). Все это работает в пользовательском режиме, а драйверы WDM - в режиме ядра.

Существует DDK, но он также не поддерживается в VStudio (но вы можете сделать проект makefile для компиляции).

Разработка драйверов сложна, склонна к появлению синего экрана и требует хорошего понимания C, структур ядра и работы с мемами. Ни один из этих навыков не требуется для C # и .NET, поэтому существует длинный и болезненный путь обучения.

7
задан Kirschstein 20 October 2009 в 11:50
поделиться

5 ответов

Из того, что я читал, метод CreateDatabase () ограничен в том, что он может воспроизвести из исходной базы данных. Он не будет воссоздавать такие вещи, как триггеры и проверочные ограничения, и я предполагаю, что он также не создает настраиваемые схемы. Возможно, вы захотите создать базу данных с помощью файла SQL Server .mdf вместо этого, чтобы обойти эту проблему.

3
ответ дан 7 December 2019 в 10:04
поделиться

I generally do this sort of work in NAnt to create, initialize the database, create users, add logins, etc....and also roll back capabilities. I have written on this topic quite a bit if you are interested:

Build automation with NAnt

Continuous integration with CruiseControl.NET

I will have to see if I can get LINQ to SQL to work in the way you are trying to use it...that sounds like what we used to do with NHibernate.

1
ответ дан 7 December 2019 в 10:04
поделиться

Вашему пользователю также требуется db_dlladmin для этой базы данных.

0
ответ дан 7 December 2019 в 10:04
поделиться

The dbcreator fixed server role grants you the permission to create a database. If you create a database, you are the dbo of said database and as dbo you have absolute power in the database, includding the power to create, alter and drop any schema and any object contained in any schema.

the problem with LINQ's CreateDatabase() is not permission, is code quality. The generated SQL code simply does not create the needed schema, so the Create table statements fail because the schema does not exist.

Your best choice, if you can afford it, is to add a VSTS Database Edition GDR R2 project to your solution and declare all your database objects in the Database Edition project (part of your solution). You'll be also getting the added benefit of storing all your database objects in a proper source control solution. The output of the Database project would be a .dbschema file containing the definition of your database. At deployment time (test or real) you would run the VSDBCMD Deployment and Schema Import tool to import your .dbschema into the target server. The tool is capable of doing initial deployment of your schema, as well as further upgrades (deploy only differences). The VSDB solution would allow you to controll all your database objects: tables, indexes, views, schemas, field contraints, table constraints, triggers, procedures, users, permissions, logins etc etc. It really covers all the objects that can be defined in SQL Server.

1
ответ дан 7 December 2019 в 10:04
поделиться

Я бы определенно посмотрел на Entity Framework, который я начинаю изучать в наши дни. Это OR / M, и он наиболее точно соответствует вашим потребностям, и намного больше, когда выйдет следующая версия.

Entity Framework также является детищем Microsoft, и его можно найти здесь: http://msdn.microsoft.com/en-us/library/aa697427 (VS.80) .aspx

One Между LINQ to SQL и LINQ to Entities следует помнить, что вы программируете на основе модели, а не базы данных.

0
ответ дан 7 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: