dotnet / dotnet/EntityFramework.Docs
Update .NET Microservices infrastructure docs
- Dominant language
- Mermaid
- Stars
- 1.7k
- Forks
- 2k
- Avg merge
- 7d 23h
- Merged PRs (30d)
- 16
Description
After using navigation properties in many-to-many relationship I've got exceptions on every entity with navigation property. But it works well after comments code lines with navigation set.
```C#
public class TestContext : DbContext
{
private readonly string _connectionString;
public TestContext(string connectionString)
{
_connectionString = connectionString;
}
public DbSet Users { get; private set; }
public DbSet Blogs { get; private set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_connectionString,
o => o.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new UserConfiguration());
modelBuilder.ApplyConfiguration(new BlogConfiguration());
}
}
public class User
{
private readonly List _blogCollection = new();
public int Id { get; set; }
public IReadOnlyCollection BlogCollection => _blogCollection.AsReadOnly();
}
public class Blog
{
private readonly List _userCollection = new();
public int Id { get; set; }
public IReadOnlyCollection UserCollection => _userCollection.AsReadOnly();
}
internal class UserConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
var navigation = builder.Metadata.FindNavigation(nameof(User.BlogCollection));
navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
builder.HasMany(p => p.BlogCollection)
.WithMany(p => p.UserCollection)
.UsingEntity(j => j.ToTable("MayToManyTableName"));
}
}
internal class BlogConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
var navigation = builder.Metadata.FindNavigation(nameof(Blog.UserCollection));
navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
}
}
```
Contributor guide
Assessment
This issue has not been assessed yet.