Ich verwende den MongoDB EF -Kernanbieter und erhalte Duplikate für eingebettete Sammlungen komplexer Objekte, wenn ich das Stammobjekt lade. Ich habe dies mit der neuesten Version 8.0 und vorherigen 7.0.0-Preview.1 bemerkt. Ich benutze .NET8. Dies ist meine .Proj -Datei: < /p>
Exe
net8.0
enable
enable
< /code>
Hier ist das Beispiel, das den Fehler auslöst: < /p>
using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.EntityFrameworkCore.Extensions;
var connectionString = Environment.GetEnvironmentVariable("MONGODB_URL");
var client = new MongoClient(connectionString);
var db = MflixDbContext.Create(client.GetDatabase("sample"));
var movie1 = new Movie();
movie1._id = ObjectId.GenerateNewId();
movie1.title = "Movie 1";
movie1.actors.Add(new Actor() { FirstName = "John", LastName = "Smith" });
movie1.actors.Add(new Actor() { FirstName = "Mary", LastName = "Smith" });
db.Movies.Add(movie1);
Console.WriteLine("Total actors going to the database: " + movie1.actors.Count());
db.SaveChanges();
var movieFromDb = db.Movies.FirstOrDefault(x => x._id == movie1._id);
Console.WriteLine("Movie: " + movieFromDb.title);
Console.WriteLine("Total actors after loading from database: " + movieFromDb.actors.Count());
internal class MflixDbContext : DbContext
{
public DbSet Movies { get; init; }
public static MflixDbContext Create(IMongoDatabase database) =>
new(new DbContextOptionsBuilder()
.UseMongoDB(database.Client, database.DatabaseNamespace.DatabaseName)
.Options);
public MflixDbContext(DbContextOptions options)
: base(options) {}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity().ToCollection("movies");
}
}
internal class Actor
{
public string FirstName { get; set;}
public string LastName { get; set;}
}
internal class Movie
{
public ObjectId _id { get; set; }
public string title { get; set; }
public List actors { get; set; } = new List();
}
< /code>
Wenn Sie ausführen, erhalten Sie die folgende Ausgabe: < /p>
Total -Akteure, die zur Datenbank gehen: 2
Film: Film 1
Gesamtschauspieler nach dem Laden aus der Datenbank: 4 < /p>
< /blockquote>
Wenn Sie sich die ansehen Kollektion "Filme" in MongoDB, Sie werden keine Duplikate finden: < /p>
sample> db.movies.find()
[
{
_id: ObjectId('66396aa29571e499f39d6fab'),
title: 'Movie 1',
actors: [
{ FirstName: 'John', LastName: 'Smith' },
{ FirstName: 'Mary', LastName: 'Smith' }
]
}
]
< /code>
Ich hoffe, ich mache etwas falsch, weil dies ein ziemlich großer Fehler ist, der veröffentlicht wird. Während 7.0.0 eine Vorschau -Veröffentlichung war, ist 8.0 keine Vorschau -Veröffentlichung, sondern eine allgemeine Version. sie. < /p>
Kann jemand bestätigen, dass er dieses Problem hat? Ich werde dies auch in den MongoDB -Foren veröffentlichen.
MongoDB EF -Kernanbieter erstellt doppelte Sammelelemente beim Laden des Stammobjekts ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post