我还使用 GUID 作为 PK。我的PK默认设置是……
(CONVERT([uniqueidentifier],CONVERT([binary](6),getdate(),(0))+CONVERT([binary](10),newid(),(0)),(0)))
我一直在研究亚音速源,我开始认为这与以下事实有关……嘘,我不太清楚。
我知道 Subsonic 没有看到 NOT NULL, PK, Default Setting 的列是只读的。
因此,假设您在解决方案中没有任何其他 PK 数据类型,您可以在 Structs.tt 文件中添加几行...
在第 30 行找到 foreach 循环...
<# foreach(var col in tbl.Columns){#>
Columns.Add(new DatabaseColumn("<#=col.Name#>", this)
{
IsPrimaryKey = <#=col.IsPK.ToString().ToLower()#>,
DataType = DbType.<#=col.DbType.ToString()#>,
IsNullable = <#=col.IsNullable.ToString().ToLower()#>,
AutoIncrement = <#=col.AutoIncrement.ToString().ToLower()#>,
IsForeignKey = <#=col.IsForeignKey.ToString().ToLower()#>
<# if (col.IsPK.ToString().ToLower() == "true"){ #>
, IsReadOnly = <#=col.IsPK.ToString().ToLower()#>
<# } #>
});
您要添加的部分是 IsForeignKey 之后的 IF 语句。
只要你有一些默认设置,这应该使它适用于你的 PK Guid。
不过,我无法对您在数据库中可能拥有的任何其他 PK 做出任何保证。你已经被警告了。