C# 使用现有记录抽象类创建子级

C# 使用现有记录抽象类创建子级,c#,sql-server,asp.net-mvc,sql-server-2008,abstract-class,C#,Sql Server,Asp.net Mvc,Sql Server 2008,Abstract Class,我的类Person包含以下字段: 人格(PK) 名字 名字 类成员,包含以下字段: PersonID(FK和PK) 作用 成员自 成员继承自个人。因此,在数据库中,它也有字段Name和First Name 当我直接创建一个成员时,我在文本框中提供所有数据并将其发送到数据库。当我创建成员时,数据库会自动创建一个人,这很好。但是,当我有一个现有的person时,我想使用此数据创建一个成员,比如升级person,但不需要数据库创建一个新的person记录,因为我已经有person记录了 在C#

我的类
Person
包含以下字段:

  • 人格(PK)
  • 名字
  • 名字
成员
,包含以下字段:

  • PersonID(FK和PK)
  • 作用
  • 成员自
成员
继承自
个人
。因此,在数据库中,它也有字段
Name
First Name

当我直接创建一个成员时,我在文本框中提供所有数据并将其发送到数据库。当我创建成员时,数据库会自动创建一个人,这很好。但是,当我有一个现有的person时,我想使用此数据创建一个成员,比如升级person,但不需要数据库创建一个新的person记录,因为我已经有person记录了

C#和MVC
中是如何做到这一点的


PS:
DBMS是SQL Server 2008

您可能希望使用子句实现插入/更新查询。它可能看起来像:

MERGE Members AS t
USING 
    (
        SELECT  @person_id person_id,                           
    ) AS s
    ON t.person_id = s.person_id
WHEN MATCHED THEN
    UPDATE 
    SET ...
WHEN NOT MATCHED THEN
    INSERT
        (
            person_id,
            name,
            ...
        )
    VALUES
        (
            s.person_id,
            @name,
            ...
        );

因此,当您传递值为0或null的
@person\u id
变量或数据库中不存在的任何其他变量时,您将获得新记录,否则,如果
@person\u id
与数据库中的任何记录匹配,它将被更新

我想,无论它是否为mvc,您如何更新数据库?它是通过一个直接被调用的存储过程,还是通过EF或linqtosql等?@samar这是通过EF实现的,我们可以使用linqtosql