c# - 实体框架一对多关系不起作用
问题描述
我最近开始学习 ASP.NET,现在是学习 Entity Framework 的时候了,但是我在一对多的关系上遇到了一些麻烦。我知道已经有相同的问题,但我试图按照答案进行操作,但仍然无法使其发挥作用。
我有这两个实体:
public class Map
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Place> Places { get; set; } = new List<Place>();
}
public class Place
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public virtual Map Map { get; set; }
public long MapId { get; set; }
}
并且关系定义如下:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Place>()
.HasOne(p => p.Map)
.WithMany(m => m.Places)
.HasForeignKey(p => p.MapId);
}
但无论我做什么,集合Places
总是空的:
var map = _dataContext.Maps
.Where(map => map.Id == id)
.Include(o => o.Places)
.SingleOrDefault();
如果有人可以帮助我,我会很感激。
编辑:sql迁移输出
CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" (
"MigrationId" character varying(150) NOT NULL,
"ProductVersion" character varying(32) NOT NULL,
CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId")
);
START TRANSACTION;
CREATE TABLE "Maps" (
"Id" bigint GENERATED BY DEFAULT AS IDENTITY,
"Name" text NULL,
CONSTRAINT "PK_Maps" PRIMARY KEY ("Id")
);
CREATE TABLE "Places" (
"Id" bigint GENERATED BY DEFAULT AS IDENTITY,
"Title" text NULL,
"Description" text NULL,
"Latitude" double precision NOT NULL,
"Longitude" double precision NOT NULL,
"MapId" bigint NOT NULL,
CONSTRAINT "PK_Places" PRIMARY KEY ("Id"),
CONSTRAINT "FK_Places_Maps_MapId" FOREIGN KEY ("MapId") REFERENCES "Maps" ("Id") ON DELETE CASCADE
);
CREATE INDEX "IX_Places_MapId" ON "Places" ("MapId");
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20210909132715_init', '5.0.9');
COMMIT;
解决方案
好的,所以我有点笨,在记录 sql 查询后我发现它Include
不起作用并意识到我只有一个错误,错误的导入......
坏的 -using System.Data.Entity;
好的 -using Microsoft.EntityFrameworkCore;
我很惊讶没有人抱怨这个进口。
推荐阅读
- javascript - Socket 经常向客户端发送数据
- c - 在 C 中用 uint8_t 表示布尔值
- python - 在具有相同名称python XML的特定元素之间获取数据
- asp.net-core - 如何将具有动态 HTML 的 Razor Pages 中的多个实体添加到可编辑实体?
- c++ - 如何使用 pybind11 在 C++ 中使用 numpy 数组?
- mysql - 为什么 MySQL5.7 似乎忽略了子查询
- python - Python:将列表值列表插入mysql数据库
- c++ - 使用 QProcess 调用 mysql CLI 命令
- php - PHP 究竟是如何记住会话数据的?
- python-3.x - Pybluez库python中的OSError