EF -Kern Hinzufügen einer Spalte zu einer Tabelle, die angeblich nicht da ist?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 EF -Kern Hinzufügen einer Spalte zu einer Tabelle, die angeblich nicht da ist?

Post by Anonymous »

Ich habe gerade Probleme bei der Verwendung von EF und ich bin mir nicht sicher, ob dies sinnvoll ist.

Code: Select all

public class BSDTUser : DatabaseEntity
{
[Required]
public string Username { get; set; }
[Required]
public string Email { get; set; }
public ICollection Models { get; set; } = new List();
public ICollection Templates { get; set; } = new List();
}

public class BSDTModel : DatabaseEntity
{
[Required]
public string Name { get; set; }

[Required]
public string InputJSON { get; set; }

public string? OutputJSON { get; set; }
public DateTime DateCreated { get; set; }
public DateTime LastModified { get; set; }
public bool IsPublic { get; set; }
public List SharedTo { get; set; } = [];
public string? ImageURL { get; set; }

public Guid? OwnerID { get; set; }

[ForeignKey(nameof(OwnerID))]
public BSDTUser? Owner { get; set; }
}

public class BSDTTemplate : DatabaseEntity
{

[Required]
public string Name { get; set; }

[Required]
public string InputJSON { get; set; }

public string? OutputJSON { get; set; }
public DateTime DateCreated { get; set; }
public DateTime LastModified { get; set; }

public bool IsPublic { get; set; }
public List SharedTo { get; set; } = [];
public string? ImageURL { get; set; }

public Guid? OwnerID { get; set; }

[ForeignKey(nameof(OwnerID))]
public BSDTUser? Owner { get; set; }

}
< /code>
Was ich hier möchte, ist eine Eins-zu-Viele-Beziehung: Ein BSDTUSER hat viele BSDTModels und ein BSDTUSER hat viele BSDTTemplate.protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

modelBuilder.Entity(entity =>
{
entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");
entity.Property(e => e.InputJSON).HasColumnType("nvarchar(max)");
entity.Property(e => e.OutputJSON).HasColumnType("nvarchar(max)");

entity.HasOne(m => m.Owner)
.WithMany(u => u.Models)
.HasForeignKey(m => m.OwnerID);
});

modelBuilder.Entity(entity =>
{
entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");
entity.Property(e => e.InputJSON).HasColumnType("nvarchar(max)");
entity.Property(e => e.OutputJSON).HasColumnType("nvarchar(max)");

entity.HasOne(t => t.Owner)
.WithMany(u => u.Templates)
.HasForeignKey(t => t.OwnerID);
});

modelBuilder.Entity(entity =>
{
entity.Property(e => e.Id).HasDefaultValueSql("NEWID()");

entity.HasMany(t => t.Models)
.WithOne(u => u.Owner)
.HasForeignKey(t => t.OwnerID);

entity.HasMany(t => t.Templates)
.WithOne(u => u.Owner)
.HasForeignKey(t => t.OwnerID);

}
< /code>
Wenn ich eine Migration erstelle, enthält die Tabelle für den BSDTuser Spalten BSDTModelid und BSDTTemplateID, das angeblich nicht die Absicht ist.  < /p>
migrationBuilder.CreateTable(
name: "BSDTUsers",
columns: table => new
{
Id = table.Column(type: "uniqueidentifier", nullable: false),
Username = table.Column(type: "nvarchar(max)", nullable: false),
Email = table.Column(type: "nvarchar(max)", nullable: false),
BSDTModelId = table.Column(type: "uniqueidentifier", nullable: true),
BSDTTemplateId = table.Column(type: "uniqueidentifier", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_BSDTUsers", x => x.Id);
table.ForeignKey(
name: "FK_BSDTUsers_BSDTModels_BSDTModelId",
column: x => x.BSDTModelId,
principalTable: "BSDTModels",
principalColumn: "Id");
table.ForeignKey(
name: "FK_BSDTUsers_BSDTTemplates_BSDTTemplateId",
column: x => x.BSDTTemplateId,
principalTable: "BSDTTemplates",
principalColumn: "Id");
});
< /code>
definiere ich hier etwas falsches? Ich kann nicht herausfinden, woher diese Spalten kommen. < /P>
Bearbeiten: < /p>
public class DatabaseEntity
{
[Key]
public Guid Id { get; set; }
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post