In meiner DbContext
Klasse habe ich Folgendes:
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c => { c.HasMaxLength(250); });
}
aber auch innerhalb der EntityTypeConfiguration
Klasse für ein bestimmtes Modell, das ich habe:
{
Property(p => p.Name).HasMaxLength(500);
}
Das Problem ist, dass das Festlegen der Eigenschaft auf 500 innerhalb der Konfigurationsklasse nicht wirksam wird und EF weiterhin das Maximum auf 250 überprüft.
Wie kann ich eine allgemeine Einstellung von 250 haben, aber je nach Bedarf durch fließende APIs in jeder Klasse überschreiben?
Wenn Sie einem Zeichenfolgenfeld 500 Zeichen geben möchten.
Sie können dies mit dem Attribut " MaxLength " tun.
Ich erstelle eine Beispieltabelle wie die folgende.
Meine Kontextkonfiguration.
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c => { c.HasMaxLength(250); });
}
Ich erstelle eine Tabelle mit dem Namen FooEntity.
using System;
using System.ComponentModel.DataAnnotations;
namespace Foo.Model
{
public class FooEntity
{
[MaxLength(500)]
public string FooName { get; set; }
}
}
Nach dem Hinzufügen dieses Attributs lautet die Migrationsausgabe wie folgt. Selbst wenn ein Limit von 250 Zeichen angegeben ist, wird es in SQL als 500 Zeichen übergeben.
CreateTable(
"dbo.FooEntity",
c => new
{
FooName = c.String(maxLength: 500)
});