Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
IoTSharp
IoTSharp
提交
367f8a53
IoTSharp
项目概览
IoTSharp
/
IoTSharp
10 个月 前同步成功
通知
15
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
IoTSharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
367f8a53
编写于
1月 29, 2019
作者:
麦壳饼
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add audit log and Data Side
上级
76513da7
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
916 addition
and
145 deletion
+916
-145
IoTSharp.Hub/Controllers/DevicesController.cs
IoTSharp.Hub/Controllers/DevicesController.cs
+6
-6
IoTSharp.Hub/Data/ApplicationDbContext.cs
IoTSharp.Hub/Data/ApplicationDbContext.cs
+11
-0
IoTSharp.Hub/Data/AuditLog.cs
IoTSharp.Hub/Data/AuditLog.cs
+24
-0
IoTSharp.Hub/Data/DataStorage.cs
IoTSharp.Hub/Data/DataStorage.cs
+4
-0
IoTSharp.Hub/Data/Enums.cs
IoTSharp.Hub/Data/Enums.cs
+17
-1
IoTSharp.Hub/Data/Migrations/20190129085237_AuditLog.Designer.cs
...p.Hub/Data/Migrations/20190129085237_AuditLog.Designer.cs
+561
-0
IoTSharp.Hub/Data/Migrations/20190129085237_AuditLog.cs
IoTSharp.Hub/Data/Migrations/20190129085237_AuditLog.cs
+71
-0
IoTSharp.Hub/Data/Migrations/ApplicationDbContextModelSnapshot.cs
....Hub/Data/Migrations/ApplicationDbContextModelSnapshot.cs
+52
-1
doc/IoTSharp.dbs
doc/IoTSharp.dbs
+88
-71
doc/IoTSharp.dbs.bak
doc/IoTSharp.dbs.bak
+82
-66
未找到文件。
IoTSharp.Hub/Controllers/DevicesController.cs
浏览文件 @
367f8a53
...
...
@@ -200,14 +200,14 @@ namespace IoTSharp.Hub.Controllers
}
else
{
var
result
=
await
SaveAsync
<
TelemetryLatest
,
TelemetryData
>(
telemetrys
,
device
.
FirstOrDefault
());
var
result
=
await
SaveAsync
<
TelemetryLatest
,
TelemetryData
>(
telemetrys
,
device
.
FirstOrDefault
()
,
DataSide
.
ClientSide
);
return
Ok
(
new
ApiResult
<
Dic
>(
result
.
ret
>
0
?
ApiCode
.
Success
:
ApiCode
.
NothingToDo
,
result
.
ret
>
0
?
"OK"
:
"No Telemetry save"
,
result
.
exceptions
));
}
}
[
AllowAnonymous
]
[
HttpPost
(
"{access_token}/Attribute"
)]
public
async
Task
<
ActionResult
<
ApiResult
<
Dic
>>>
Attribute
(
string
access_token
,
Dictionary
<
string
,
object
>
attributes
)
[
HttpPost
(
"{access_token}/Attribute
s
"
)]
public
async
Task
<
ActionResult
<
ApiResult
<
Dic
>>>
Attribute
s
(
string
access_token
,
Dictionary
<
string
,
object
>
attributes
)
{
Dic
exceptions
=
new
Dic
();
var
deviceIdentity
=
from
id
in
_context
.
DeviceIdentities
where
id
.
IdentityId
==
access_token
&&
id
.
IdentityType
==
IdentityType
.
AccessToken
select
id
;
...
...
@@ -218,7 +218,7 @@ namespace IoTSharp.Hub.Controllers
}
else
{
var
result
=
await
SaveAsync
<
AttributeLatest
,
AttributeData
>(
attributes
,
device
.
FirstOrDefault
());
var
result
=
await
SaveAsync
<
AttributeLatest
,
AttributeData
>(
attributes
,
device
.
FirstOrDefault
()
,
DataSide
.
ClientSide
);
return
Ok
(
new
ApiResult
<
Dic
>(
result
.
ret
>
0
?
ApiCode
.
Success
:
ApiCode
.
NothingToDo
,
result
.
ret
>
0
?
"OK"
:
"No Attribute save"
,
result
.
exceptions
));
}
}
...
...
@@ -231,7 +231,7 @@ namespace IoTSharp.Hub.Controllers
/// <param name="data"></param>
/// <param name="device"></param>
/// <returns></returns>
private
async
Task
<(
int
ret
,
Dic
exceptions
)>
SaveAsync
<
L
,
D
>(
Dictionary
<
string
,
object
>
data
,
Device
device
)
where
L
:
DataStorage
,
new
()
where
D
:
DataStorage
,
new
()
private
async
Task
<(
int
ret
,
Dic
exceptions
)>
SaveAsync
<
L
,
D
>(
Dictionary
<
string
,
object
>
data
,
Device
device
,
DataSide
dataSide
)
where
L
:
DataStorage
,
new
()
where
D
:
DataStorage
,
new
()
{
Dic
exceptions
=
new
Dic
();
data
.
ToList
().
ForEach
(
kp
=>
...
...
@@ -253,7 +253,7 @@ namespace IoTSharp.Hub.Controllers
}
else
{
var
t2
=
new
L
()
{
DateTime
=
DateTime
.
Now
,
Device
=
device
,
Id
=
Guid
.
NewGuid
(),
KeyName
=
kp
.
Key
};
var
t2
=
new
L
()
{
DateTime
=
DateTime
.
Now
,
Device
=
device
,
Id
=
Guid
.
NewGuid
(),
KeyName
=
kp
.
Key
,
DataSide
=
dataSide
};
FillKVToModel
(
kp
,
t2
);
_context
.
Set
<
L
>().
Add
(
t2
);
}
...
...
IoTSharp.Hub/Data/ApplicationDbContext.cs
浏览文件 @
367f8a53
...
...
@@ -96,6 +96,16 @@ namespace IoTSharp.Hub.Data
modelBuilder
.
Entity
<
TelemetryLatest
>()
.
Property
(
b
=>
b
.
Value_XML
)
.
HasColumnType
(
"xml"
);
modelBuilder
.
Entity
<
AuditLog
>()
.
Property
(
b
=>
b
.
ActionData
)
.
HasColumnType
(
"jsonb"
);
modelBuilder
.
Entity
<
AuditLog
>()
.
Property
(
b
=>
b
.
ActionResult
)
.
HasColumnType
(
"jsonb"
);
}
private
void
ForSqlServer
(
ModelBuilder
modelBuilder
)
...
...
@@ -127,5 +137,6 @@ namespace IoTSharp.Hub.Data
public
DbSet
<
AttributeData
>
AttributeData
{
get
;
set
;
}
public
DbSet
<
TelemetryLatest
>
TelemetryLatest
{
get
;
set
;
}
public
DbSet
<
DeviceIdentity
>
DeviceIdentities
{
get
;
set
;
}
public
DbSet
<
AuditLog
>
AuditLog
{
get
;
set
;
}
}
}
\ No newline at end of file
IoTSharp.Hub/Data/AuditLog.cs
0 → 100644
浏览文件 @
367f8a53
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
namespace
IoTSharp.Hub.Data
{
public
class
AuditLog
{
public
Guid
Id
{
get
;
set
;
}
=
Guid
.
NewGuid
();
public
Tenant
Tenant
{
get
;
set
;
}
public
Customer
Customer
{
get
;
set
;
}
public
string
UserId
{
get
;
set
;
}
public
string
UserName
{
get
;
set
;
}
public
Guid
ObjectID
{
get
;
set
;
}
public
string
ObjectName
{
get
;
set
;
}
public
ObjectType
ObjectType
{
get
;
set
;
}
=
ObjectType
.
Unknow
;
public
string
ActionName
{
get
;
set
;
}
public
string
ActionData
{
get
;
set
;
}
public
string
ActionResult
{
get
;
set
;
}
public
DateTime
ActiveDateTime
{
get
;
set
;
}
=
DateTime
.
Now
;
}
}
IoTSharp.Hub/Data/DataStorage.cs
浏览文件 @
367f8a53
...
...
@@ -15,6 +15,10 @@ namespace IoTSharp.Hub.Data
[
Required
]
public
Device
Device
{
get
;
set
;
}
[
Required
]
[
EnumDataType
(
typeof
(
DataSide
))]
public
DataSide
DataSide
{
get
;
set
;
}
=
DataSide
.
AnySide
;
[
Required
]
[
EnumDataType
(
typeof
(
DataCatalog
))]
public
DataCatalog
Catalog
{
get
;
set
;
}
...
...
IoTSharp.Hub/Data/Enums.cs
浏览文件 @
367f8a53
...
...
@@ -36,7 +36,12 @@ namespace IoTSharp.Hub.Data
TelemetryData
,
TelemetryLatest
,
}
public
enum
DataSide
{
AnySide
,
ServerSide
,
ClientSide
,
}
public
enum
UserRole
{
Anonymous
,
...
...
@@ -70,4 +75,15 @@ namespace IoTSharp.Hub.Data
DevicePassword
,
X509Certificate
}
public
enum
ObjectType
{
Unknow
,
Device
,
Tenant
,
Customer
,
User
,
MQTTBroker
,
MQTTClient
}
}
\ No newline at end of file
IoTSharp.Hub/Data/Migrations/20190129085237_AuditLog.Designer.cs
0 → 100644
浏览文件 @
367f8a53
// <auto-generated />
using
System
;
using
IoTSharp.Hub.Data
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.EntityFrameworkCore.Infrastructure
;
using
Microsoft.EntityFrameworkCore.Migrations
;
using
Microsoft.EntityFrameworkCore.Storage.ValueConversion
;
using
Npgsql.EntityFrameworkCore.PostgreSQL.Metadata
;
namespace
IoTSharp.Hub.Migrations
{
[
DbContext
(
typeof
(
ApplicationDbContext
))]
[
Migration
(
"20190129085237_AuditLog"
)]
partial
class
AuditLog
{
protected
override
void
BuildTargetModel
(
ModelBuilder
modelBuilder
)
{
#pragma warning disable 612, 618
modelBuilder
.
HasAnnotation
(
"Npgsql:ValueGenerationStrategy"
,
NpgsqlValueGenerationStrategy
.
SerialColumn
)
.
HasAnnotation
(
"ProductVersion"
,
"2.2.1-servicing-10028"
)
.
HasAnnotation
(
"Relational:MaxIdentifierLength"
,
63
);
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AuditLog"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"ActionData"
)
.
HasColumnType
(
"jsonb"
);
b
.
Property
<
string
>(
"ActionName"
);
b
.
Property
<
string
>(
"ActionResult"
)
.
HasColumnType
(
"jsonb"
);
b
.
Property
<
DateTime
>(
"ActiveDateTime"
);
b
.
Property
<
Guid
?>(
"CustomerId"
);
b
.
Property
<
Guid
>(
"ObjectID"
);
b
.
Property
<
string
>(
"ObjectName"
);
b
.
Property
<
int
>(
"ObjectType"
);
b
.
Property
<
Guid
?>(
"TenantId"
);
b
.
Property
<
string
>(
"UserId"
);
b
.
Property
<
string
>(
"UserName"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"CustomerId"
);
b
.
HasIndex
(
"TenantId"
);
b
.
ToTable
(
"AuditLog"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Customer"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"Address"
);
b
.
Property
<
string
>(
"City"
);
b
.
Property
<
string
>(
"Country"
);
b
.
Property
<
string
>(
"Email"
);
b
.
Property
<
string
>(
"Name"
);
b
.
Property
<
string
>(
"Phone"
);
b
.
Property
<
string
>(
"Province"
);
b
.
Property
<
string
>(
"Street"
);
b
.
Property
<
Guid
?>(
"TenantId"
);
b
.
Property
<
int
>(
"ZipCode"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"TenantId"
);
b
.
ToTable
(
"Customer"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.DataStorage"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
int
>(
"Catalog"
);
b
.
Property
<
int
>(
"DataSide"
);
b
.
Property
<
DateTime
>(
"DateTime"
);
b
.
Property
<
string
>(
"KeyName"
)
.
IsRequired
();
b
.
Property
<
int
>(
"Type"
);
b
.
Property
<
byte
[
]>
(
"Value_Binary"
);
b
.
Property
<
bool
>(
"Value_Boolean"
);
b
.
Property
<
double
>(
"Value_Double"
);
b
.
Property
<
string
>(
"Value_Json"
)
.
HasColumnType
(
"jsonb"
);
b
.
Property
<
long
>(
"Value_Long"
);
b
.
Property
<
string
>(
"Value_String"
);
b
.
Property
<
string
>(
"Value_XML"
)
.
HasColumnType
(
"xml"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"DataStorage"
);
b
.
HasDiscriminator
<
int
>(
"Catalog"
).
HasValue
(
0
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Device"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
Guid
?>(
"CustomerId"
);
b
.
Property
<
string
>(
"Name"
);
b
.
Property
<
Guid
?>(
"TenantId"
);
b
.
Property
<
string
>(
"Type"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"CustomerId"
);
b
.
HasIndex
(
"TenantId"
);
b
.
ToTable
(
"Device"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.DeviceIdentity"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
Guid
>(
"DeviceId"
);
b
.
Property
<
string
>(
"IdentityId"
)
.
IsRequired
();
b
.
Property
<
int
>(
"IdentityType"
);
b
.
Property
<
string
>(
"IdentityValue"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"DeviceId"
);
b
.
ToTable
(
"DeviceIdentities"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Relationship"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
Guid
?>(
"CustomerId"
);
b
.
Property
<
string
>(
"IdentityUserId"
);
b
.
Property
<
Guid
?>(
"TenantId"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"CustomerId"
);
b
.
HasIndex
(
"IdentityUserId"
);
b
.
HasIndex
(
"TenantId"
);
b
.
ToTable
(
"Relationship"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Tenant"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"Address"
);
b
.
Property
<
string
>(
"City"
);
b
.
Property
<
string
>(
"Country"
);
b
.
Property
<
string
>(
"EMail"
);
b
.
Property
<
string
>(
"Name"
);
b
.
Property
<
string
>(
"Phone"
);
b
.
Property
<
string
>(
"Province"
);
b
.
Property
<
string
>(
"Street"
);
b
.
Property
<
int
>(
"ZipCode"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"Tenant"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityRole"
,
b
=>
{
b
.
Property
<
string
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
();
b
.
Property
<
string
>(
"Name"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"NormalizedName"
)
.
HasMaxLength
(
256
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"NormalizedName"
)
.
IsUnique
()
.
HasName
(
"RoleNameIndex"
);
b
.
ToTable
(
"AspNetRoles"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>"
,
b
=>
{
b
.
Property
<
int
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"ClaimType"
);
b
.
Property
<
string
>(
"ClaimValue"
);
b
.
Property
<
string
>(
"RoleId"
)
.
IsRequired
();
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"RoleId"
);
b
.
ToTable
(
"AspNetRoleClaims"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUser"
,
b
=>
{
b
.
Property
<
string
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
int
>(
"AccessFailedCount"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
();
b
.
Property
<
string
>(
"Email"
)
.
HasMaxLength
(
256
);
b
.
Property
<
bool
>(
"EmailConfirmed"
);
b
.
Property
<
bool
>(
"LockoutEnabled"
);
b
.
Property
<
DateTimeOffset
?>(
"LockoutEnd"
);
b
.
Property
<
string
>(
"NormalizedEmail"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"NormalizedUserName"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"PasswordHash"
);
b
.
Property
<
string
>(
"PhoneNumber"
);
b
.
Property
<
bool
>(
"PhoneNumberConfirmed"
);
b
.
Property
<
string
>(
"SecurityStamp"
);
b
.
Property
<
bool
>(
"TwoFactorEnabled"
);
b
.
Property
<
string
>(
"UserName"
)
.
HasMaxLength
(
256
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"NormalizedEmail"
)
.
HasName
(
"EmailIndex"
);
b
.
HasIndex
(
"NormalizedUserName"
)
.
IsUnique
()
.
HasName
(
"UserNameIndex"
);
b
.
ToTable
(
"AspNetUsers"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserClaim<string>"
,
b
=>
{
b
.
Property
<
int
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"ClaimType"
);
b
.
Property
<
string
>(
"ClaimValue"
);
b
.
Property
<
string
>(
"UserId"
)
.
IsRequired
();
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"UserId"
);
b
.
ToTable
(
"AspNetUserClaims"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserLogin<string>"
,
b
=>
{
b
.
Property
<
string
>(
"LoginProvider"
);
b
.
Property
<
string
>(
"ProviderKey"
);
b
.
Property
<
string
>(
"ProviderDisplayName"
);
b
.
Property
<
string
>(
"UserId"
)
.
IsRequired
();
b
.
HasKey
(
"LoginProvider"
,
"ProviderKey"
);
b
.
HasIndex
(
"UserId"
);
b
.
ToTable
(
"AspNetUserLogins"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserRole<string>"
,
b
=>
{
b
.
Property
<
string
>(
"UserId"
);
b
.
Property
<
string
>(
"RoleId"
);
b
.
HasKey
(
"UserId"
,
"RoleId"
);
b
.
HasIndex
(
"RoleId"
);
b
.
ToTable
(
"AspNetUserRoles"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserToken<string>"
,
b
=>
{
b
.
Property
<
string
>(
"UserId"
);
b
.
Property
<
string
>(
"LoginProvider"
);
b
.
Property
<
string
>(
"Name"
);
b
.
Property
<
string
>(
"Value"
);
b
.
HasKey
(
"UserId"
,
"LoginProvider"
,
"Name"
);
b
.
ToTable
(
"AspNetUserTokens"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AttributeData"
,
b
=>
{
b
.
HasBaseType
(
"IoTSharp.Hub.Data.DataStorage"
);
b
.
Property
<
Guid
>(
"DeviceId"
);
b
.
HasIndex
(
"DeviceId"
);
b
.
HasDiscriminator
().
HasValue
(
1
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AttributeLatest"
,
b
=>
{
b
.
HasBaseType
(
"IoTSharp.Hub.Data.DataStorage"
);
b
.
Property
<
Guid
>(
"DeviceId"
)
.
HasColumnName
(
"AttributeLatest_DeviceId"
);
b
.
HasIndex
(
"DeviceId"
);
b
.
HasDiscriminator
().
HasValue
(
2
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.TelemetryData"
,
b
=>
{
b
.
HasBaseType
(
"IoTSharp.Hub.Data.DataStorage"
);
b
.
Property
<
Guid
>(
"DeviceId"
)
.
HasColumnName
(
"TelemetryData_DeviceId"
);
b
.
HasIndex
(
"DeviceId"
);
b
.
HasDiscriminator
().
HasValue
(
3
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.TelemetryLatest"
,
b
=>
{
b
.
HasBaseType
(
"IoTSharp.Hub.Data.DataStorage"
);
b
.
Property
<
Guid
>(
"DeviceId"
)
.
HasColumnName
(
"TelemetryLatest_DeviceId"
);
b
.
HasIndex
(
"DeviceId"
);
b
.
HasDiscriminator
().
HasValue
(
4
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AuditLog"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Customer"
,
"Customer"
)
.
WithMany
()
.
HasForeignKey
(
"CustomerId"
);
b
.
HasOne
(
"IoTSharp.Hub.Data.Tenant"
,
"Tenant"
)
.
WithMany
()
.
HasForeignKey
(
"TenantId"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Customer"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Tenant"
,
"Tenant"
)
.
WithMany
(
"Customers"
)
.
HasForeignKey
(
"TenantId"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Device"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Customer"
,
"Customer"
)
.
WithMany
(
"Devices"
)
.
HasForeignKey
(
"CustomerId"
);
b
.
HasOne
(
"IoTSharp.Hub.Data.Tenant"
,
"Tenant"
)
.
WithMany
(
"Devices"
)
.
HasForeignKey
(
"TenantId"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.DeviceIdentity"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Device"
,
"Device"
)
.
WithMany
()
.
HasForeignKey
(
"DeviceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Relationship"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Customer"
,
"Customer"
)
.
WithMany
()
.
HasForeignKey
(
"CustomerId"
);
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityUser"
,
"IdentityUser"
)
.
WithMany
()
.
HasForeignKey
(
"IdentityUserId"
);
b
.
HasOne
(
"IoTSharp.Hub.Data.Tenant"
,
"Tenant"
)
.
WithMany
()
.
HasForeignKey
(
"TenantId"
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>"
,
b
=>
{
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityRole"
)
.
WithMany
()
.
HasForeignKey
(
"RoleId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserClaim<string>"
,
b
=>
{
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityUser"
)
.
WithMany
()
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserLogin<string>"
,
b
=>
{
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityUser"
)
.
WithMany
()
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserRole<string>"
,
b
=>
{
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityRole"
)
.
WithMany
()
.
HasForeignKey
(
"RoleId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityUser"
)
.
WithMany
()
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"Microsoft.AspNetCore.Identity.IdentityUserToken<string>"
,
b
=>
{
b
.
HasOne
(
"Microsoft.AspNetCore.Identity.IdentityUser"
)
.
WithMany
()
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AttributeData"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Device"
,
"Device"
)
.
WithMany
(
"AttributeData"
)
.
HasForeignKey
(
"DeviceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AttributeLatest"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Device"
,
"Device"
)
.
WithMany
(
"AttributeLatest"
)
.
HasForeignKey
(
"DeviceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.TelemetryData"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Device"
,
"Device"
)
.
WithMany
(
"TelemetryData"
)
.
HasForeignKey
(
"DeviceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.TelemetryLatest"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Device"
,
"Device"
)
.
WithMany
(
"TelemetryLatest"
)
.
HasForeignKey
(
"DeviceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
);
});
#pragma warning restore 612, 618
}
}
}
IoTSharp.Hub/Data/Migrations/20190129085237_AuditLog.cs
0 → 100644
浏览文件 @
367f8a53
using
System
;
using
Microsoft.EntityFrameworkCore.Migrations
;
namespace
IoTSharp.Hub.Migrations
{
public
partial
class
AuditLog
:
Migration
{
protected
override
void
Up
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
AddColumn
<
int
>(
name
:
"DataSide"
,
table
:
"DataStorage"
,
nullable
:
false
,
defaultValue
:
0
);
migrationBuilder
.
CreateTable
(
name
:
"AuditLog"
,
columns
:
table
=>
new
{
Id
=
table
.
Column
<
Guid
>(
nullable
:
false
),
TenantId
=
table
.
Column
<
Guid
>(
nullable
:
true
),
CustomerId
=
table
.
Column
<
Guid
>(
nullable
:
true
),
UserId
=
table
.
Column
<
string
>(
nullable
:
true
),
UserName
=
table
.
Column
<
string
>(
nullable
:
true
),
ObjectID
=
table
.
Column
<
Guid
>(
nullable
:
false
),
ObjectName
=
table
.
Column
<
string
>(
nullable
:
true
),
ObjectType
=
table
.
Column
<
int
>(
nullable
:
false
),
ActionName
=
table
.
Column
<
string
>(
nullable
:
true
),
ActionData
=
table
.
Column
<
string
>(
type
:
"jsonb"
,
nullable
:
true
),
ActionResult
=
table
.
Column
<
string
>(
type
:
"jsonb"
,
nullable
:
true
),
ActiveDateTime
=
table
.
Column
<
DateTime
>(
nullable
:
false
)
},
constraints
:
table
=>
{
table
.
PrimaryKey
(
"PK_AuditLog"
,
x
=>
x
.
Id
);
table
.
ForeignKey
(
name
:
"FK_AuditLog_Customer_CustomerId"
,
column
:
x
=>
x
.
CustomerId
,
principalTable
:
"Customer"
,
principalColumn
:
"Id"
,
onDelete
:
ReferentialAction
.
Restrict
);
table
.
ForeignKey
(
name
:
"FK_AuditLog_Tenant_TenantId"
,
column
:
x
=>
x
.
TenantId
,
principalTable
:
"Tenant"
,
principalColumn
:
"Id"
,
onDelete
:
ReferentialAction
.
Restrict
);
});
migrationBuilder
.
CreateIndex
(
name
:
"IX_AuditLog_CustomerId"
,
table
:
"AuditLog"
,
column
:
"CustomerId"
);
migrationBuilder
.
CreateIndex
(
name
:
"IX_AuditLog_TenantId"
,
table
:
"AuditLog"
,
column
:
"TenantId"
);
}
protected
override
void
Down
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
DropTable
(
name
:
"AuditLog"
);
migrationBuilder
.
DropColumn
(
name
:
"DataSide"
,
table
:
"DataStorage"
);
}
}
}
IoTSharp.Hub/Data/Migrations/ApplicationDbContextModelSnapshot.cs
浏览文件 @
367f8a53
...
...
@@ -16,9 +16,47 @@ namespace IoTSharp.Hub.Migrations
#pragma warning disable 612, 618
modelBuilder
.
HasAnnotation
(
"Npgsql:ValueGenerationStrategy"
,
NpgsqlValueGenerationStrategy
.
SerialColumn
)
.
HasAnnotation
(
"ProductVersion"
,
"2.2.
0-rtm-35687
"
)
.
HasAnnotation
(
"ProductVersion"
,
"2.2.
1-servicing-10028
"
)
.
HasAnnotation
(
"Relational:MaxIdentifierLength"
,
63
);
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AuditLog"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
();
b
.
Property
<
string
>(
"ActionData"
)
.
HasColumnType
(
"jsonb"
);
b
.
Property
<
string
>(
"ActionName"
);
b
.
Property
<
string
>(
"ActionResult"
)
.
HasColumnType
(
"jsonb"
);
b
.
Property
<
DateTime
>(
"ActiveDateTime"
);
b
.
Property
<
Guid
?>(
"CustomerId"
);
b
.
Property
<
Guid
>(
"ObjectID"
);
b
.
Property
<
string
>(
"ObjectName"
);
b
.
Property
<
int
>(
"ObjectType"
);
b
.
Property
<
Guid
?>(
"TenantId"
);
b
.
Property
<
string
>(
"UserId"
);
b
.
Property
<
string
>(
"UserName"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"CustomerId"
);
b
.
HasIndex
(
"TenantId"
);
b
.
ToTable
(
"AuditLog"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Customer"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
...
...
@@ -58,6 +96,8 @@ namespace IoTSharp.Hub.Migrations
b
.
Property
<
int
>(
"Catalog"
);
b
.
Property
<
int
>(
"DataSide"
);
b
.
Property
<
DateTime
>(
"DateTime"
);
b
.
Property
<
string
>(
"KeyName"
)
...
...
@@ -385,6 +425,17 @@ namespace IoTSharp.Hub.Migrations
b
.
HasDiscriminator
().
HasValue
(
4
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.AuditLog"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Customer"
,
"Customer"
)
.
WithMany
()
.
HasForeignKey
(
"CustomerId"
);
b
.
HasOne
(
"IoTSharp.Hub.Data.Tenant"
,
"Tenant"
)
.
WithMany
()
.
HasForeignKey
(
"TenantId"
);
});
modelBuilder
.
Entity
(
"IoTSharp.Hub.Data.Customer"
,
b
=>
{
b
.
HasOne
(
"IoTSharp.Hub.Data.Tenant"
,
"Tenant"
)
...
...
doc/IoTSharp.dbs
浏览文件 @
367f8a53
...
...
@@ -44,8 +44,8 @@
</fk>
</table>
<table
name=
"AspNetUserLogins"
>
<column
name=
"LoginProvider"
type=
"
varchar"
length=
"128
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"ProviderKey"
type=
"
varchar"
length=
"128
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"LoginProvider"
type=
"
text
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"ProviderKey"
type=
"
text
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"ProviderDisplayName"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"UserId"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<index
name=
"PK_AspNetUserLogins"
unique=
"PRIMARY_KEY"
>
...
...
@@ -78,8 +78,8 @@
</table>
<table
name=
"AspNetUserTokens"
>
<column
name=
"UserId"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"LoginProvider"
type=
"
varchar"
length=
"128
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Name"
type=
"
varchar"
length=
"128
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"LoginProvider"
type=
"
text
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Name"
type=
"
text
"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Value"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<index
name=
"PK_AspNetUserTokens"
unique=
"PRIMARY_KEY"
>
<column
name=
"UserId"
/>
...
...
@@ -116,52 +116,6 @@
<column
name=
"NormalizedEmail"
/>
</index>
</table>
<table
name=
"AttributeData"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"KeyName"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Type"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
/>
<column
name=
"Value_Boolean"
type=
"bool"
length=
"1"
decimal=
"0"
jt=
"-7"
mandatory=
"y"
/>
<column
name=
"Value_String"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Value_Long"
type=
"bigint"
length=
"19"
decimal=
"0"
jt=
"-5"
mandatory=
"y"
/>
<column
name=
"Value_Double"
type=
"float8"
length=
"17"
decimal=
"17"
jt=
"6"
mandatory=
"y"
/>
<column
name=
"Value_Json"
type=
"jsonb"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Value_XML"
type=
"xml"
decimal=
"0"
jt=
"2009"
/>
<column
name=
"Value_Binary"
type=
"bytea"
decimal=
"0"
jt=
"-2"
/>
<column
name=
"DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"DateTime"
type=
"timestamp"
length=
"29"
decimal=
"6"
jt=
"93"
mandatory=
"y"
/>
<column
name=
"Discriminator"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Scope"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
/>
<column
name=
"DeviceId1"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TelemetryData_DeviceId1"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TelemetryLatest_DeviceId1"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<index
name=
"PK_AttributeData"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
<index
name=
"IX_AttributeData_DeviceId"
unique=
"NORMAL"
>
<column
name=
"DeviceId"
/>
</index>
<index
name=
"IX_AttributeData_DeviceId1"
unique=
"NORMAL"
>
<column
name=
"DeviceId1"
/>
</index>
<index
name=
"IX_AttributeData_TelemetryData_DeviceId1"
unique=
"NORMAL"
>
<column
name=
"TelemetryData_DeviceId1"
/>
</index>
<index
name=
"IX_AttributeData_TelemetryLatest_DeviceId1"
unique=
"NORMAL"
>
<column
name=
"TelemetryLatest_DeviceId1"
/>
</index>
<fk
name=
"FK_AttributeData_Device_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"restrict"
>
<fk_column
name=
"DeviceId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_AttributeData_Device_DeviceId1"
to_schema=
"public"
to_table=
"Device"
delete_action=
"restrict"
>
<fk_column
name=
"DeviceId1"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_AttributeData_Device_TelemetryData_DeviceId1"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"TelemetryData_DeviceId1"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_AttributeData_Device_TelemetryLatest_DeviceId1"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"TelemetryLatest_DeviceId1"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"Customer"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"Name"
type=
"text"
decimal=
"0"
jt=
"12"
/>
...
...
@@ -184,6 +138,53 @@
<fk_column
name=
"TenantId"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"DataStorage"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"KeyName"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Type"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
/>
<column
name=
"DateTime"
type=
"timestamp"
length=
"29"
decimal=
"6"
jt=
"93"
mandatory=
"y"
/>
<column
name=
"Value_Boolean"
type=
"bool"
length=
"1"
decimal=
"0"
jt=
"-7"
mandatory=
"y"
/>
<column
name=
"Value_String"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Value_Long"
type=
"bigint"
length=
"19"
decimal=
"0"
jt=
"-5"
mandatory=
"y"
/>
<column
name=
"Value_Double"
type=
"float8"
length=
"17"
decimal=
"17"
jt=
"6"
mandatory=
"y"
/>
<column
name=
"Value_Json"
type=
"jsonb"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Value_XML"
type=
"xml"
decimal=
"0"
jt=
"2009"
/>
<column
name=
"Value_Binary"
type=
"bytea"
decimal=
"0"
jt=
"-2"
/>
<column
name=
"DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TelemetryData_DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TelemetryLatest_DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Catalog"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
>
<defo>
0
</defo>
</column>
<column
name=
"AttributeLatest_DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<index
name=
"PK_DataStorage"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
<index
name=
"IX_DataStorage_AttributeLatest_DeviceId"
unique=
"NORMAL"
>
<column
name=
"AttributeLatest_DeviceId"
/>
</index>
<index
name=
"IX_DataStorage_DeviceId"
unique=
"NORMAL"
>
<column
name=
"DeviceId"
/>
</index>
<index
name=
"IX_DataStorage_TelemetryData_DeviceId"
unique=
"NORMAL"
>
<column
name=
"TelemetryData_DeviceId"
/>
</index>
<index
name=
"IX_DataStorage_TelemetryLatest_DeviceId"
unique=
"NORMAL"
>
<column
name=
"TelemetryLatest_DeviceId"
/>
</index>
<fk
name=
"FK_DataStorage_Device_AttributeLatest_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"AttributeLatest_DeviceId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_DataStorage_Device_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"DeviceId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_DataStorage_Device_TelemetryData_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"TelemetryData_DeviceId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_DataStorage_Device_TelemetryLatest_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"TelemetryLatest_DeviceId"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"Device"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"Name"
type=
"text"
decimal=
"0"
jt=
"12"
/>
...
...
@@ -206,11 +207,27 @@
<fk_column
name=
"TenantId"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"DeviceIdentities"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"IdentityType"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
/>
<column
name=
"IdentityId"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"IdentityValue"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<index
name=
"PK_DeviceIdentities"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
<index
name=
"IX_DeviceIdentities_DeviceId"
unique=
"NORMAL"
>
<column
name=
"DeviceId"
/>
</index>
<fk
name=
"FK_DeviceIdentities_Device_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"DeviceId"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"Relationship"
>
<column
name=
"CustomerId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TenantId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"IdentityId"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Identity
User
Id"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<index
name=
"IX_Relationship_TenantId"
unique=
"NORMAL"
>
<column
name=
"TenantId"
/>
</index>
...
...
@@ -220,18 +237,18 @@
<index
name=
"PK_Relationship"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
<index
name=
"IX_Relationship_IdentityId"
unique=
"NORMAL"
>
<column
name=
"IdentityId"
/>
<index
name=
"IX_Relationship_Identity
User
Id"
unique=
"NORMAL"
>
<column
name=
"Identity
User
Id"
/>
</index>
<fk
name=
"FK_Relationship_AspNetUsers_IdentityId"
to_schema=
"public"
to_table=
"AspNetUsers"
delete_action=
"restrict"
>
<fk_column
name=
"IdentityId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_Relationship_Customer_CustomerId"
to_schema=
"public"
to_table=
"Customer"
delete_action=
"restrict"
>
<fk_column
name=
"CustomerId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_Relationship_Tenant_TenantId"
to_schema=
"public"
to_table=
"Tenant"
delete_action=
"restrict"
>
<fk_column
name=
"TenantId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_Relationship_AspNetUsers_IdentityUserId"
to_schema=
"public"
to_table=
"AspNetUsers"
delete_action=
"restrict"
>
<fk_column
name=
"IdentityUserId"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"Tenant"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
...
...
@@ -258,27 +275,27 @@
<sequence
name=
"AspNetRoleClaims_Id_seq"
start=
"1"
/>
<sequence
name=
"AspNetUserClaims_Id_seq"
start=
"1"
/>
</schema>
<connector
name=
"PostgreSQL"
database=
"PostgreSQL"
driver_class=
"org.postgresql.Driver"
driver_jar=
"postgresql-42.2.
2.jar"
driver_desc=
"Standard"
host=
"localhost"
port=
"5432"
instance=
"IoTSharp"
user=
"postgres"
passwd=
"ZnV0dXJl
"
/>
<connector
name=
"PostgreSQL"
database=
"PostgreSQL"
driver_class=
"org.postgresql.Driver"
driver_jar=
"postgresql-42.2.
5.jar"
driver_desc=
"Standard"
host=
"localhost"
port=
"5432"
instance=
"IoTSharp"
user=
"postgres"
passwd=
"cG9zdGdyZXM="
sshEnable=
"true"
sshHost=
"39.98.211.23"
sshPort=
"22"
sshUser=
"root"
sshUseKey=
"false"
sshPassword=
"1-q2-w3-e4-r5-t
"
/>
<layout
name=
"Default Layout"
id=
"Layout_159a766"
show_relation=
"columns"
>
<entity
schema=
"public"
name=
"AspNetRoles"
color=
"C7F4BE"
x=
"1040"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserLogins"
color=
"C7F4BE"
x=
"864"
y=
"432"
/>
<entity
schema=
"public"
name=
"AspNetRoleClaims"
color=
"C7F4BE"
x=
"1248"
y=
"80"
/>
<entity
schema=
"public"
name=
"__EFMigrationsHistory"
color=
"F4DDBE"
x=
"624"
y=
"768"
/>
<entity
schema=
"public"
name=
"AspNetUsers"
color=
"C7F4BE"
x=
"624"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserRoles"
color=
"C7F4BE"
x=
"864"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserTokens"
color=
"C7F4BE"
x=
"624"
y=
"432"
/>
<entity
schema=
"public"
name=
"AspNetUserClaims"
color=
"C7F4BE"
x=
"864"
y=
"256"
/>
<entity
schema=
"public"
name=
"Relationship"
color=
"BED3F4"
x=
"336"
y=
"544"
/>
<entity
schema=
"public"
name=
"Customer"
color=
"BED3F4"
x=
"48"
y=
"272"
/>
<entity
schema=
"public"
name=
"Tenant"
color=
"BED3F4"
x=
"192"
y=
"272"
/>
<entity
schema=
"public"
name=
"Device"
color=
"BED3F4"
x=
"192"
y=
"80"
/>
<entity
schema=
"public"
name=
"AttributeData"
color=
"BED3F4"
x=
"352"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetRoles"
color=
"C7F4BE"
x=
"992"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserLogins"
color=
"C7F4BE"
x=
"816"
y=
"432"
/>
<entity
schema=
"public"
name=
"AspNetRoleClaims"
color=
"C7F4BE"
x=
"1200"
y=
"80"
/>
<entity
schema=
"public"
name=
"__EFMigrationsHistory"
color=
"F4DDBE"
x=
"352"
y=
"1040"
/>
<entity
schema=
"public"
name=
"AspNetUsers"
color=
"C7F4BE"
x=
"576"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserRoles"
color=
"C7F4BE"
x=
"816"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserTokens"
color=
"C7F4BE"
x=
"576"
y=
"432"
/>
<entity
schema=
"public"
name=
"AspNetUserClaims"
color=
"C7F4BE"
x=
"816"
y=
"256"
/>
<entity
schema=
"public"
name=
"Relationship"
color=
"BED3F4"
x=
"368"
y=
"80"
/>
<entity
schema=
"public"
name=
"Customer"
color=
"BED3F4"
x=
"64"
y=
"272"
/>
<entity
schema=
"public"
name=
"Tenant"
color=
"BED3F4"
x=
"224"
y=
"80"
/>
<entity
schema=
"public"
name=
"Device"
color=
"BED3F4"
x=
"64"
y=
"80"
/>
<entity
schema=
"public"
name=
"DataStorage"
color=
"3986C1"
x=
"48"
y=
"608"
/>
<entity
schema=
"public"
name=
"DeviceIdentities"
color=
"3986C1"
x=
"352"
y=
"608"
/>
<group
name=
"Device"
color=
"ECF0F7"
>
<entity
schema=
"public"
name=
"Device"
/>
<entity
schema=
"public"
name=
"Tenant"
/>
<entity
schema=
"public"
name=
"Customer"
/>
<entity
schema=
"public"
name=
"Relationship"
/>
<entity
schema=
"public"
name=
"AttributeData"
/>
</group>
<group
name=
"AspNetUsers"
color=
"EEF7EC"
>
<entity
schema=
"public"
name=
"AspNetUsers"
/>
...
...
doc/IoTSharp.dbs.bak
浏览文件 @
367f8a53
...
...
@@ -116,9 +116,9 @@
<column
name=
"NormalizedEmail"
/>
</index>
</table>
<table
name=
"
ClientSideAttribute
"
>
<table
name=
"
AttributeData
"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"
Name"
type=
"text"
decimal=
"0"
jt=
"12
"
/>
<column
name=
"
KeyName"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y
"
/>
<column
name=
"Type"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
/>
<column
name=
"Value_Boolean"
type=
"bool"
length=
"1"
decimal=
"0"
jt=
"-7"
mandatory=
"y"
/>
<column
name=
"Value_String"
type=
"text"
decimal=
"0"
jt=
"12"
/>
...
...
@@ -127,9 +127,40 @@
<column
name=
"Value_Json"
type=
"jsonb"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Value_XML"
type=
"xml"
decimal=
"0"
jt=
"2009"
/>
<column
name=
"Value_Binary"
type=
"bytea"
decimal=
"0"
jt=
"-2"
/>
<index
name=
"PK_ClientSideAttribute"
unique=
"PRIMARY_KEY"
>
<column
name=
"DeviceId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"DateTime"
type=
"timestamp"
length=
"29"
decimal=
"6"
jt=
"93"
mandatory=
"y"
/>
<column
name=
"Discriminator"
type=
"text"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
<column
name=
"Scope"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
/>
<column
name=
"DeviceId1"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TelemetryData_DeviceId1"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TelemetryLatest_DeviceId1"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<index
name=
"PK_AttributeData"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
<index
name=
"IX_AttributeData_DeviceId"
unique=
"NORMAL"
>
<column
name=
"DeviceId"
/>
</index>
<index
name=
"IX_AttributeData_DeviceId1"
unique=
"NORMAL"
>
<column
name=
"DeviceId1"
/>
</index>
<index
name=
"IX_AttributeData_TelemetryData_DeviceId1"
unique=
"NORMAL"
>
<column
name=
"TelemetryData_DeviceId1"
/>
</index>
<index
name=
"IX_AttributeData_TelemetryLatest_DeviceId1"
unique=
"NORMAL"
>
<column
name=
"TelemetryLatest_DeviceId1"
/>
</index>
<fk
name=
"FK_AttributeData_Device_DeviceId"
to_schema=
"public"
to_table=
"Device"
delete_action=
"restrict"
>
<fk_column
name=
"DeviceId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_AttributeData_Device_DeviceId1"
to_schema=
"public"
to_table=
"Device"
delete_action=
"restrict"
>
<fk_column
name=
"DeviceId1"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_AttributeData_Device_TelemetryData_DeviceId1"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"TelemetryData_DeviceId1"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_AttributeData_Device_TelemetryLatest_DeviceId1"
to_schema=
"public"
to_table=
"Device"
delete_action=
"cascade"
>
<fk_column
name=
"TelemetryLatest_DeviceId1"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"Customer"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
...
...
@@ -152,9 +183,6 @@
<fk
name=
"FK_Customer_Tenant_TenantId"
to_schema=
"public"
to_table=
"Tenant"
delete_action=
"restrict"
>
<fk_column
name=
"TenantId"
pk=
"Id"
/>
</fk>
<fk
name=
"fk_customer_relationship"
to_schema=
"public"
to_table=
"Relationship"
>
<fk_column
name=
"Id"
pk=
"CustomerId"
/>
</fk>
</table>
<table
name=
"Device"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
...
...
@@ -179,48 +207,31 @@
</fk>
</table>
<table
name=
"Relationship"
>
<column
name=
"UseId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"CustomerId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"TenantId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<index
name=
"PK_Relationship"
unique=
"PRIMARY_KEY"
>
<column
name=
"UseId"
/>
</index>
<index
name=
"unq_relationship_tenantid"
unique=
"UNIQUE"
>
<column
name=
"CustomerId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"TenantId"
type=
"uuid"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"IdentityId"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<index
name=
"IX_Relationship_TenantId"
unique=
"NORMAL"
>
<column
name=
"TenantId"
/>
</index>
<index
name=
"
unq_relationship_customerid"
unique=
"UNIQUE
"
>
<index
name=
"
IX_Relationship_CustomerId"
unique=
"NORMAL
"
>
<column
name=
"CustomerId"
/>
</index>
</table>
<table
name=
"ServerSideAttribute"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"Name"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Type"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
/>
<column
name=
"Value_Boolean"
type=
"bool"
length=
"1"
decimal=
"0"
jt=
"-7"
mandatory=
"y"
/>
<column
name=
"Value_String"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Value_Long"
type=
"bigint"
length=
"19"
decimal=
"0"
jt=
"-5"
mandatory=
"y"
/>
<column
name=
"Value_Double"
type=
"float8"
length=
"17"
decimal=
"17"
jt=
"6"
mandatory=
"y"
/>
<column
name=
"Value_Json"
type=
"jsonb"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Value_XML"
type=
"xml"
decimal=
"0"
jt=
"2009"
/>
<column
name=
"Value_Binary"
type=
"bytea"
decimal=
"0"
jt=
"-2"
/>
<index
name=
"PK_ServerSideAttribute"
unique=
"PRIMARY_KEY"
>
<index
name=
"PK_Relationship"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
</table>
<table
name=
"SharedSideAttribute"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
<column
name=
"Name"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Type"
type=
"integer"
length=
"10"
decimal=
"0"
jt=
"4"
mandatory=
"y"
/>
<column
name=
"Value_Boolean"
type=
"bool"
length=
"1"
decimal=
"0"
jt=
"-7"
mandatory=
"y"
/>
<column
name=
"Value_String"
type=
"text"
decimal=
"0"
jt=
"12"
/>
<column
name=
"Value_Long"
type=
"bigint"
length=
"19"
decimal=
"0"
jt=
"-5"
mandatory=
"y"
/>
<column
name=
"Value_Double"
type=
"float8"
length=
"17"
decimal=
"17"
jt=
"6"
mandatory=
"y"
/>
<column
name=
"Value_Json"
type=
"jsonb"
decimal=
"0"
jt=
"1111"
/>
<column
name=
"Value_XML"
type=
"xml"
decimal=
"0"
jt=
"2009"
/>
<column
name=
"Value_Binary"
type=
"bytea"
decimal=
"0"
jt=
"-2"
/>
<index
name=
"PK_SharedSideAttribute"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
<index
name=
"IX_Relationship_IdentityId"
unique=
"NORMAL"
>
<column
name=
"IdentityId"
/>
</index>
<fk
name=
"FK_Relationship_AspNetUsers_IdentityId"
to_schema=
"public"
to_table=
"AspNetUsers"
delete_action=
"restrict"
>
<fk_column
name=
"IdentityId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_Relationship_Customer_CustomerId"
to_schema=
"public"
to_table=
"Customer"
delete_action=
"restrict"
>
<fk_column
name=
"CustomerId"
pk=
"Id"
/>
</fk>
<fk
name=
"FK_Relationship_Tenant_TenantId"
to_schema=
"public"
to_table=
"Tenant"
delete_action=
"restrict"
>
<fk_column
name=
"TenantId"
pk=
"Id"
/>
</fk>
</table>
<table
name=
"Tenant"
>
<column
name=
"Id"
type=
"uuid"
decimal=
"0"
jt=
"1111"
mandatory=
"y"
/>
...
...
@@ -236,9 +247,6 @@
<index
name=
"PK_Tenant"
unique=
"PRIMARY_KEY"
>
<column
name=
"Id"
/>
</index>
<fk
name=
"fk_tenant_relationship"
to_schema=
"public"
to_table=
"Relationship"
>
<fk_column
name=
"Id"
pk=
"TenantId"
/>
</fk>
</table>
<table
name=
"__EFMigrationsHistory"
>
<column
name=
"MigrationId"
type=
"varchar"
length=
"150"
decimal=
"0"
jt=
"12"
mandatory=
"y"
/>
...
...
@@ -250,23 +258,37 @@
<sequence
name=
"AspNetRoleClaims_Id_seq"
start=
"1"
/>
<sequence
name=
"AspNetUserClaims_Id_seq"
start=
"1"
/>
</schema>
<connector
name=
"PostgreSQL"
database=
"PostgreSQL"
driver_class=
"org.postgresql.Driver"
driver_jar=
"postgresql-42.2.2.jar"
driver_desc=
"Standard"
host=
"
localhost
"
port=
"5432"
instance=
"IoTSharp"
user=
"postgres"
passwd=
"ZnV0dXJl"
/>
<connector
name=
"PostgreSQL"
database=
"PostgreSQL"
driver_class=
"org.postgresql.Driver"
driver_jar=
"postgresql-42.2.2.jar"
driver_desc=
"Standard"
host=
"
127.0.0.1
"
port=
"5432"
instance=
"IoTSharp"
user=
"postgres"
passwd=
"ZnV0dXJl"
/>
<layout
name=
"Default Layout"
id=
"Layout_159a766"
show_relation=
"columns"
>
<entity
schema=
"public"
name=
"AspNetRoles"
color=
"BED3F4"
x=
"464"
y=
"48"
/>
<entity
schema=
"public"
name=
"AspNetUserLogins"
color=
"BED3F4"
x=
"288"
y=
"400"
/>
<entity
schema=
"public"
name=
"Device"
color=
"C7F4BE"
x=
"1024"
y=
"48"
/>
<entity
schema=
"public"
name=
"AspNetRoleClaims"
color=
"BED3F4"
x=
"672"
y=
"48"
/>
<entity
schema=
"public"
name=
"Tenant"
color=
"C7F4BE"
x=
"1024"
y=
"336"
/>
<entity
schema=
"public"
name=
"Customer"
color=
"C7F4BE"
x=
"880"
y=
"48"
/>
<entity
schema=
"public"
name=
"__EFMigrationsHistory"
color=
"F4DDBE"
x=
"448"
y=
"544"
/>
<entity
schema=
"public"
name=
"ClientSideAttribute"
color=
"F4DDBE"
x=
"672"
y=
"544"
/>
<entity
schema=
"public"
name=
"ServerSideAttribute"
color=
"F4DDBE"
x=
"864"
y=
"560"
/>
<entity
schema=
"public"
name=
"SharedSideAttribute"
color=
"F4DDBE"
x=
"1008"
y=
"560"
/>
<entity
schema=
"public"
name=
"Relationship"
color=
"F4DDBE"
x=
"752"
y=
"400"
/>
<entity
schema=
"public"
name=
"AspNetUsers"
color=
"BED3F4"
x=
"48"
y=
"48"
/>
<entity
schema=
"public"
name=
"AspNetUserRoles"
color=
"BED3F4"
x=
"288"
y=
"48"
/>
<entity
schema=
"public"
name=
"AspNetUserTokens"
color=
"BED3F4"
x=
"48"
y=
"400"
/>
<entity
schema=
"public"
name=
"AspNetUserClaims"
color=
"BED3F4"
x=
"288"
y=
"224"
/>
<entity
schema=
"public"
name=
"AspNetRoles"
color=
"C7F4BE"
x=
"1040"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserLogins"
color=
"C7F4BE"
x=
"864"
y=
"432"
/>
<entity
schema=
"public"
name=
"AspNetRoleClaims"
color=
"C7F4BE"
x=
"1248"
y=
"80"
/>
<entity
schema=
"public"
name=
"__EFMigrationsHistory"
color=
"F4DDBE"
x=
"624"
y=
"768"
/>
<entity
schema=
"public"
name=
"AspNetUsers"
color=
"C7F4BE"
x=
"624"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserRoles"
color=
"C7F4BE"
x=
"864"
y=
"80"
/>
<entity
schema=
"public"
name=
"AspNetUserTokens"
color=
"C7F4BE"
x=
"624"
y=
"432"
/>
<entity
schema=
"public"
name=
"AspNetUserClaims"
color=
"C7F4BE"
x=
"864"
y=
"256"
/>
<entity
schema=
"public"
name=
"Relationship"
color=
"BED3F4"
x=
"336"
y=
"544"
/>
<entity
schema=
"public"
name=
"Customer"
color=
"BED3F4"
x=
"48"
y=
"272"
/>
<entity
schema=
"public"
name=
"Tenant"
color=
"BED3F4"
x=
"192"
y=
"272"
/>
<entity
schema=
"public"
name=
"Device"
color=
"BED3F4"
x=
"192"
y=
"80"
/>
<entity
schema=
"public"
name=
"AttributeData"
color=
"BED3F4"
x=
"352"
y=
"80"
/>
<group
name=
"Device"
color=
"ECF0F7"
>
<entity
schema=
"public"
name=
"Device"
/>
<entity
schema=
"public"
name=
"Tenant"
/>
<entity
schema=
"public"
name=
"Customer"
/>
<entity
schema=
"public"
name=
"Relationship"
/>
<entity
schema=
"public"
name=
"AttributeData"
/>
</group>
<group
name=
"AspNetUsers"
color=
"EEF7EC"
>
<entity
schema=
"public"
name=
"AspNetUsers"
/>
<entity
schema=
"public"
name=
"AspNetUserRoles"
/>
<entity
schema=
"public"
name=
"AspNetRoles"
/>
<entity
schema=
"public"
name=
"AspNetUserClaims"
/>
<entity
schema=
"public"
name=
"AspNetRoleClaims"
/>
<entity
schema=
"public"
name=
"AspNetUserLogins"
/>
<entity
schema=
"public"
name=
"AspNetUserTokens"
/>
</group>
</layout>
<layout
name=
"Sample Layout with Tools"
id=
"Layout_54786c0"
show_column_type=
"y"
show_relation=
"columns"
>
<entity
schema=
"public"
name=
"AspNetRoleClaims"
color=
"BED3F4"
x=
"768"
y=
"176"
/>
...
...
@@ -276,12 +298,9 @@
<entity
schema=
"public"
name=
"AspNetUserRoles"
color=
"BED3F4"
x=
"336"
y=
"176"
/>
<entity
schema=
"public"
name=
"AspNetUserTokens"
color=
"BED3F4"
x=
"48"
y=
"528"
/>
<entity
schema=
"public"
name=
"AspNetUsers"
color=
"BED3F4"
x=
"48"
y=
"176"
/>
<entity
schema=
"public"
name=
"ClientSideAttribute"
color=
"F4DDBE"
x=
"496"
y=
"880"
/>
<entity
schema=
"public"
name=
"Customer"
color=
"C7F4BE"
x=
"976"
y=
"176"
/>
<entity
schema=
"public"
name=
"Device"
color=
"C7F4BE"
x=
"1152"
y=
"176"
/>
<entity
schema=
"public"
name=
"Relationship"
color=
"F4DDBE"
x=
"256"
y=
"1024"
/>
<entity
schema=
"public"
name=
"ServerSideAttribute"
color=
"F4DDBE"
x=
"48"
y=
"1024"
/>
<entity
schema=
"public"
name=
"SharedSideAttribute"
color=
"F4DDBE"
x=
"48"
y=
"752"
/>
<entity
schema=
"public"
name=
"Tenant"
color=
"C7F4BE"
x=
"1152"
y=
"464"
/>
<entity
schema=
"public"
name=
"__EFMigrationsHistory"
color=
"F4DDBE"
x=
"256"
y=
"880"
/>
<callout
x=
"48"
y=
"80"
pointer=
"NO"
>
...
...
@@ -308,10 +327,7 @@
</group>
<group
name=
"__EFMigrationsHistory"
color=
"F7F2EC"
>
<entity
schema=
"public"
name=
"__EFMigrationsHistory"
/>
<entity
schema=
"public"
name=
"ClientSideAttribute"
/>
<entity
schema=
"public"
name=
"Relationship"
/>
<entity
schema=
"public"
name=
"ServerSideAttribute"
/>
<entity
schema=
"public"
name=
"SharedSideAttribute"
/>
</group>
<script
name=
"Sample SQL Editor"
id=
"Editor_40b3990"
language=
"SQL"
>
<string>
<![CDATA[SELECT *
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录