我在我的 ASP.NET MVC 应用程序中使用 Fluent NHibernate
来检索数据并将数据保存到 Postgresql
数据库。
假设你有一张 table
Fields {Name, DataType, Value}
//Model
public class Table {
public virtual string Name { get; set;}
public virtual string DataType { get; set;}
public virtual string Value { get; set;}
}
所以典型的记录可能是:
Record { "Firstname", "Varchar", "Bob" }
Record { "DateOfBirth", "Timestamp", "2003-04-12 04:05:06" }
因此,为了使其全部正常工作,值需要是 Varchar
类型。
有更好的方法吗?我不喜欢 Value
是类型 string
/Varchar
的想法。
我希望值类型是 object
或其他类型。我试过这个但是从 Fluent NHibernate
得到了一个Exception
。
您将如何从 DDD 的角度解决这个问题?
最佳答案
您可以使用 json(如果您的 postgres 版本支持,则可以使用 jsonb)。
在这种情况下我不会那样做。为了充分利用索引和数据搜索,最好提出一种结构,将不同的数据类型保存在不同的字段中,以便可以高效地对它们进行排序和搜索。
一个例子:
create table obj as (obj_id serial,
name varchar,
vc_data varchar,
ts_data timestamp,
intdata integer
datatype varchar);
如有必要,您可以在所有字段上创建索引,甚至可以创建 View 您的一些代码更简单(当不按数据类型搜索或排序时)
create view obj_view as
(select obj_id,
name,
coalesce(vc_data, ts_data, int_data) data
from obj)
关于c# - 具有多个允许值类型的数据库字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932471/