SQL Server 2022 图形 - 针对 T-SQL 的实体开发人员

SQL Server 2022 Graph - Entity developer against T-SQL

提问人:Nolmë Informatique 提问时间:11/16/2023 最后编辑:marc_sNolmë Informatique 更新时间:11/17/2023 访问量:22

问:

我使用 T-SQL 从头开始创建一个数据库(此代码有效)。

正如我们所看到的,该图在 T-SQL 中使用了 $node_id,它看起来像全名 $NodeIdE 051E8F24C3E4C19A168DDEF0BAA40A7 的别名。 每次创建数据库时,此唯一 ID 都会更改。T-SQL 脚本始终有效。

CREATE DATABASE TestGraph

ALTER DATABASE TestGraph MODIFY FILE
( NAME = N'TestGraph', SIZE = 32MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB )
GO

ALTER DATABASE TestGraph MODIFY FILE
( NAME = N'TestGraph_log', SIZE = 32MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% )
GO

use "TestGraph"
go

exec sp_configure 'contained database authentication', 1
go
reconfigure
go

alter database "TestGraph"
set containment = partial
go

CREATE USER testuser WITH PASSWORD = '$Password1234'
EXEC sp_addrolemember 'db_datareader', 'testuser';
EXEC sp_addrolemember 'db_datawriter', 'testuser';
go

CREATE TABLE Species 
(
    [Id] int IDENTITY(1,1) NOT NULL,
    [TranslatedNameId] int NULL,
    [ImageIndex] int NULL,
    [Name] nvarchar(64),
    [Description] nvarchar(max) NULL,
    PRIMARY KEY (Id)
) AS NODE;

CREATE TABLE ChildSpeciesLink AS EDGE;
CREATE TABLE AncestorSpeciesLink AS EDGE;

Insert Species (Name, Description) VALUES 
(N'Racine', N'Racine de l''arbre.'),
(N'Chat', N'Chat'),
(N'Chien', N'Chien'),
(N'Furet', N'Furet'),
(N'Rat', N'Rat');

Insert into ChildSpeciesLink ($to_id,$from_id) values

-- Race Chat:
(
    (select $node_id from dbo.Species where Id=1),
    (select $node_id from dbo.Species where Id=2)
),
-- Race Chien:
(
    (select $node_id from dbo.Species where Id=1),
    (select $node_id from dbo.Species where Id=3)
);

Insert into AncestorSpeciesLink ($to_id,$from_id) values
-- Race Chat:
(
    (select $node_id from dbo.Species where Id=2),
    (select $node_id from dbo.Species where Id=1)
),
-- Race Chien:
(
    (select $node_id from dbo.Species where Id=3),
    (select $node_id from dbo.Species where Id=1)
);

但问题出在实体开发者之后。生成的类使用全名,因此我必须在数据库上重新同步 C# 代码并重新构建项目。有没有办法避免这种情况?

以下是生成的代码:

public partial class Species 
{
        public Species()
        {
            OnCreated();
        }

        public string NodeIdE051E8F24C3E4C19A168DDEF0BAA40A7 { get; set; }

        /// <summary>
        /// Clé primaire.
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Numéro de ressource externe pour la localisation.
        /// </summary>
        public int? TranslatedNameId { get; set; }

        /// <summary>
        /// Numéro d&apos;image pour un rendu plus visuel de la donnée.
        /// </summary>
        public int? ImageIndex { get; set; }

        /// <summary>
        /// Nom de l&apos;espèce concernée.
        /// </summary>
        public string Name { get; set; }

        public string Description { get; set; }

        #region Extensibility Method Definitions

        partial void OnCreated();

        #endregion
}

谢谢你的帮助。 文森特

C# 实体框架核心 net-6.0 devart sql-graph

评论


答:

1赞 Devart 11/24/2023 #1

我们将添加在将图形表导入 Devart EF Core 模型时检测和截断列名称中的 GUID 后缀的功能,并通知你。