Dapper 可以从数据库表创建模型 class 吗?

Can Dapper create a model class from DB tables?

我正在寻找一些 EF 的替代品,Dapper 似乎是一个不错的选择。但我确实有一个问题。我知道 Dapper 作为一个 Micro ORM 并不依赖或使用 class 模型,就像 EF 创建的那样。话虽如此,如果我仍然想要 反映我的数据库表的 buncha 模型怎么办?我将如何生成它们并使它们保持最新状态?或者,至少,我的一些桌子?

这是来自 Dapper GutHub 页面:

public class Dog
{
    public int? Age { get; set; }
    public Guid Id { get; set; }
    public string Name { get; set; }
    public float? Weight { get; set; }

    public int IgnoredProperty { get { return 1; } }
}            

var guid = Guid.NewGuid();
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });

Assert.Equal(1,dog.Count());
Assert.Null(dog.First().Age);
Assert.Equal(guid, dog.First().Id);

那么在这个例子中,Dog class 是手动创建的吗?

您需要自己创建 Dog class。 Dapper 只是 ADO.NET.

的包装器

如果您想节省时间,您可以先从数据库或 Entity Framework Power Tools 中通过 EF 代码生成 POCO,然后在 Dapper 中使用它。

您为什么不利用 EF 代码优先迁移到 maintain/sync 您的域模型和数据库。 Dapper 将与这些由 EF 代码首次迁移生成的实体一起工作