Ich erhalte eine ModelValidationException (ganz unten), wenn ich mit "EF-Code First" arbeite. Es will mir einen Schlüssel definieren, aber ich bin nicht sicher, was genau bedeutet es ...Wie definiere ich Keys, wenn ich mit "EF-Code First" arbeite?
public class Unit
{
Guid id;
String public_id;
String name;
bool deleted;
}
public class MyDataContext : DbContext
{
public DbSet<Unit> Units { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Unit>().ToTable("sometable");
}
}
[TestFixture]
public class DataTests
{
[Test]
public void Test()
{
MyDataContext database = new MyDataContext();
var o = database.Units;
Console.WriteLine(o.Count()); // This line throws!
Assert.IsTrue(true);
}
}
System.Data.Entity.ModelConfiguration.ModelValidationException: Eine oder mehrere Validierungsfehler während der Modellerzeugung erfasst wurden:
System.Data.Edm.EdmEntityType:: EntityType 'Einheit' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType.
System.Data.Edm.EdmEntitySet: EntityType: Die EntitySet-Einheiten basieren auf dem Typ Einheit, für den keine Schlüssel definiert sind.
EF klassifiziert Eigenschaften automatisch mit dem Suffix "Id" (beachten Sie den Kleinbuchstaben "d") als Schlüssel. Es empfiehlt sich, der Konvention zu folgen, anstatt Felder manuell als Schlüssel zuzuordnen. – Charlie