2

最初にコードを介してデータベースを生成するときに、ビット、hierarchyid、sql_variant、sysname、テーブル、またはタイムスタンプとしてプロパティをデータベースにマップすることが (Fluent Api またはデータ注釈のいずれかを介して) 可能かどうか疑問に思っていました。私にとって本当に最も重要なものは sysname です。残りについてはただ興味があります。これを行ったことがありますか?ありがとう

4

2 に答える 2

2

ここで3 年前に行った経験的なアプローチをおずおずと繰り返しました。

次の方法でテーブルに入れることができるデータ型を取得しましたSELECT name FROM sys.systypes

bigint
binary
bit
char
date
datetime
datetime2
datetimeoffset
decimal
float
geography
geometry
hierarchyid
image
int
money
nchar
ntext
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
sql_variant
sysname
text
time
timestamp
tinyint
uniqueidentifier
varbinary
varchar
xml

sysname(そこにはあるがそうではないことに注意してくださいtable)。

これらの型を含むテーブルをエンティティ フレームワーク パワー ツール (ベータ 3、EF 6.0.0 アルファ 3) でリバース エンジニアリングしたところ、次の結果が得られました。

public partial class AllType{
    public int Id { get; set; }
    public Nullable<long> bigint { get; set; }
    public byte[] binary { get; set; }
    public Nullable<bool> bit { get; set; }
    public string @char { get; set; }
    public Nullable<System.DateTime> date { get; set; }
    public Nullable<System.DateTime> datetime { get; set; }
    public Nullable<System.DateTime> datetime2 { get; set; }
    public Nullable<System.DateTimeOffset> datetimeoffset { get; set; }
    public Nullable<decimal> @decimal { get; set; }
    public Nullable<double> @float { get; set; }
    public System.Data.Entity.Spatial.DbGeography geography { get; set; }
    public System.Data.Entity.Spatial.DbGeometry geometry { get; set; }
    public byte[] image { get; set; }
    public Nullable<int> @int { get; set; }
    public Nullable<decimal> money { get; set; }
    public string nchar { get; set; }
    public string ntext { get; set; }
    public Nullable<decimal> numeric { get; set; }
    public string nvarchar { get; set; }
    public Nullable<float> real { get; set; }
    public Nullable<System.DateTime> smalldatetime { get; set; }
    public Nullable<short> smallint { get; set; }
    public Nullable<decimal> smallmoney { get; set; }
    public string sysname { get; set; }
    public string text { get; set; }
    public Nullable<System.TimeSpan> time { get; set; }
    public byte[] timestamp { get; set; }
    public Nullable<byte> tinyint { get; set; }
    public Nullable<System.Guid> uniqueidentifier { get; set; }
    public byte[] varbinary { get; set; }
    public string varchar { get; set; }
    public string xml { get; set; }    }

現在、これらのタイプはサポートされていません。

hierarchyid
sql_variant

もちろんtable、そもそも列のデータ型ではないからです。

まあ、これは tschmit007 の賢い答えを補足するばかげたアプローチです。あなたと同じように、私はただ興味があったからです。

于 2013-03-27T16:23:32.973 に答える
2

ここから読んで、私はノーと言うでしょう。sysname SQL 型に相当する CLR 型はありません。

.HasColumnType("sysname")また、非プリミティブ型名の欠落している名前空間の例外を成功させずに試します。しかし、sysname に関する CLR には何もないため、提供する名前空間がありません。

ここのフォームから、sysname がnvarchar(128) not null.

お役に立てれば

于 2013-03-27T15:13:59.143 に答える