Я новичок в Silverlight и следую руководству Silverlight для бизнес-приложений. Я подключил файл MDF, используя модель сущности ADO.NET и службу домена, как показано в видео, и все они работают нормально.
Сложность возникает из-за необходимости динамически указывать на базу данных.
В моем приложении пользователи будут входить в систему. После входа в систему программа будет настраивать взаимодействие в зависимости от пользователя. Это означает, что мне нужно указать на конкретную базу данных пользователя из приложения Silverlight после аутентификации.
Я понял, как изменить строку подключения модели, изменив код, как показано в приведенном ниже коде. Однако я не уверен, что смогу заставить его работать, используя это, или как заставить его работать, используя это, поскольку нет прямой связи между приложением Silverlight и ASP.NET.
string fileName = string.Empty;
void OnContextCreated()
{
this.Connection.ConnectionString = GenerateConnectionString(".\\SQLEXPRESS", "|DataDirectory|\\" + fileName + ".mdf");
}
public static string GenerateConnectionString(string dbServer, string fileName)
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = dbServer;
//sqlBuilder.InitialCatalog = dbName;
//sqlBuilder.UserID = "YOUR_USERNAME";
//sqlBuilder.Password = "YOUR_PASSWORD";
sqlBuilder.IntegratedSecurity = true;
sqlBuilder.AttachDBFilename = fileName;
sqlBuilder.UserInstance = true;
sqlBuilder.MultipleActiveResultSets = true;
sqlBuilder.ApplicationName = "EntityFramework";
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = "System.Data.SqlClient";
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/Model.csdl|
res://*/Model.ssdl|
res://*/Model.msl";
return entityBuilder.ToString();
}
Если это вообще возможно, я хотел бы придерживаться методов, показанных в видео, используя доменные службы и модели сущностей ADO.NET, потому что я получаю доступ к функциям служб RIA, которые позволяют мне перетаскивать таблицы, вносить изменения и т. Д. .. с большой легкостью.
Как я могу указать на базу данных во время выполнения, продолжая использовать методы, показанные в видео?
Изменить
Все базы данных SQL, на которые я буду указывать, имеют идентичный макет. То есть у них одинаковые таблицы и поля. В эти поля вводятся данные, специфичные для пользователя.