Cześć,
mam takie pytanie odnośnie tworzenia klasy dla Entity Framework przy użyciu "code first".
Chciałbym tak utworzyć klasę, żeby zawierała tylko dwie listy. Jedna miałaby wartości string jako nazwy parametrów i wartości string jako wartości parametrów. Druga miałaby wartości string jako nazwy parametrów i wartości double jako wartości parametrów. (Część parametrów przyjmuje wartości string, a część double). Czy coś takiego można obsłużyć w Entity Framework przy użyciu "code first"?
Nie byłoby to problemem, gdybym miał z góry określone wartości string i double w klasie. Tutaj jednak nie znam liczby tych zmiennych (są one dodawane dynamicznie w trakcie wykonania aplikacji), stąd też są one w listach z nazwami i wartościami.
Docelowo każda wartość string z nazwą parametru (z obu list) byłaby nazwą kolumny, a każda zmienna z wartością parametru (zmienna string z pierwszej listy lub zmienna double z drugiej listy) byłaby wartością dla kolejnego wiersza danych, dodawanych do tabeli.
Na przykład coś takiego:
public class EntityStringColumn
{
string ParameterName { get; set; }
string ParameterValue { get; set; }
}
public class EntityDoubleColumn
{
string ParameterName { get; set; }
double ParameterValue { get; set; }
}
public class EntityData
{
List<EntityStringColumn> EntityStringColumns { get; set; }
List<EntityDoubleColumn> EntityDoubleColumns { get; set; }
public EntityData()
{
EntityStringColumns = new List<EntityStringColumn>();
EntityDoubleColumns = new List<EntityDoubleColumn>();
}
}
W jaki sposób można coś takiego obsłużyć w Entity Framework przy użyciu "code first"?
Pozdrawiam!
PS Rozszerzyłem trochę swój kod, jednak nie tworzy on w prawidłowy sposób bazy danych. Co może być przyczyną?
app.config
<connectionStrings>
<add
name="CodeFirstDatabase"
providerName="System.Data.SqlClient"
connectionString="Server=.\SQLEXPRESS;Database=MT4Analyzer;Trusted_Connection=true;"/>
</connectionStrings>
Database.cs
public class EntityData : DbContext
{
// DbContext required: C:\Program Files (x86)\Microsoft Web Tools\Packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll
public List<EntityStringColumn> EntityStringColumns { get; set; }
public List<EntityDoubleColumn> EntityDoubleColumns { get; set; }
public EntityData()
{
EntityStringColumns = new List<EntityStringColumn>();
EntityDoubleColumns = new List<EntityDoubleColumn>();
}
}
TheOtherFile.cs
// W tym miejscu currentDBRow ma wszystkie wartości, które chcę dodać do DB.
using (var db = currentDBRow)
{
var result = db.SaveChanges();
}
Zmienna 'result' ma wartość zero, a baza danych nie zostaje utworzona. Do serwera mogę się dostać w Management Studio z uprawnieniami konta, z którego uruchamiam aplikację. Jeśli bym jednak chciał się dostać przez "sa" to muszę podać hasło. Serwer umożliwia logowanie w "mixed mode".