C# EntityFramework 中数据实体如何继承自定义基类
在一些特定的情况下 EF 在继承自定义基类时会报(该场景为 MySQL 数据库):
MySql.Data.MySqlClient.MySqlException: Table 'dbxXx.keyvaluebase' doesn't exist
咋眼一看错误提示的是 MySQL 数据库中不存在 keyvaluebase 这张表。但实际是我们的数据实体类继承了 KeyValueBase,所以数据库中确实不存在。
我们给 KeyValueBase 这个基类加上 abstract 修饰符后,问题就解决了。因为使用abstrac修饰的类,该类只能作为其他类的基类。
题外话:通常数据实体在继承基类的场景主要是 EntityBase,其次则是一些数据结构非常相似的表才可能会用到继承。现在都流行拆成微服务,所以后者的场景并不是特别多见。先记录下来为方便以后查阅。总之只要能减少重复的代码就有提升的空间。