dotnet / dotnet/EntityFramework.Docs

Update .NET Microservices infrastructure docs

Open
#3,895 10 comments 0 reactions 0 assignees View on GitHub
area-global new-pm
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.