【问题标题】:Create child using existing record abstract class使用现有记录抽象类创建子级
【发布时间】:2014-02-18 08:16:15
【问题描述】:

我的课程Person 有以下字段:

  • PersonID (PK)
  • 姓名
  • 名字

还有 Member 类的字段:

  • PersonID(FK 和 PK)
  • 功能
  • 自此成为会员

Member 继承自 Person。所以在数据库中它也有NameFirst Name这两个字段。

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

这是如何在C# and MVC 中完成的?

PS:DBMS is SQL Server 2008

【问题讨论】:

  • 我觉得不管是不是mvc,你是怎么更新数据库的呢?是通过存储过程直接调用还是通过EF或Linq-to-sql等?
  • @samar 是通过 EF,我们可能会使用 Linq-to-sql

标签: c# sql-server asp.net-mvc sql-server-2008 abstract-class


【解决方案1】:

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

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,
            ...
        );

所以当你传递 @person_id 值为 0 或 null 或任何其他在数据库中不存在的变量时,你将获得新记录,否则,如果 @person_id 与数据库中的任何记录匹配,它将被更新

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多