小编Anu*_*bix的帖子

.NET Core 中是否类似于 Ruby on Rails 中的 ActiveRecord?

我正在从 Rails 切换到 .NET Core,但我真正怀念的是 ActiveRecord ORM。在模型中,您只需定义关系:

#Town Model
class Town < ApplicationRecord
  belongs_to :country
end

#Country Model
class Country < ApplicationRecord
  has_many :towns
end
Run Code Online (Sandbox Code Playgroud)

然后您可以简单地获取特定国家所有城镇的列表:

@country = Country.find(params[:id])
@towns = @country.towns
Run Code Online (Sandbox Code Playgroud)

这非常清楚,尤其是在您通过 id 链接多个模型的情况下。在 .Net Core 中,我通常会得到这样的结果:

Task<List<Town>> towns = await _context.Towns.Where(x => x.CountryId == countryId).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

这仍然可以接受,但只是因为只有模型 - 模型关系。

假设我们想要在 Rails 中获取所选城镇的大陆:

@town = Town.find(params[:id])
@continent = @town.country.continent
Run Code Online (Sandbox Code Playgroud)

在.NET Core中,现在我必须使用连接,最终结果将非常复杂,这里很容易犯错误(而且情况并不复杂)。图像具有非常复杂的 SQL 查询,LINQ 对您帮助不大,而且您非常接近编写纯 SQL。

这就是为什么我问,.NET Core 中是否有类似于 Rails 中非常方便的 ActiveRecord ORM 的东西。

感谢您的回复和时间。

c# ruby activerecord ruby-on-rails asp.net-core

5
推荐指数
1
解决办法
1818
查看次数

标签 统计

activerecord ×1

asp.net-core ×1

c# ×1

ruby ×1

ruby-on-rails ×1