Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP MVC测试项目级联删除而不是无操作_C#_Asp.net Mvc_Cascading Deletes - Fatal编程技术网

C# ASP MVC测试项目级联删除而不是无操作

C# ASP MVC测试项目级联删除而不是无操作,c#,asp.net-mvc,cascading-deletes,C#,Asp.net Mvc,Cascading Deletes,我对删除有一个不寻常的问题。我的模型包括一个联系人表。联系人可能有鹿联系人信息或牲畜联系人信息。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除。如果存在鹿或牲畜数据,则不会删除。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除 例如: 联系人96拥有牲畜和鹿场数据 用户选择deer farm并删除96个 结果:仅删除鹿场数据。共享的联系人数据与其行一起保留 用户选择牲畜并删

我对删除有一个不寻常的问题。我的模型包括一个联系人表。联系人可能有鹿联系人信息或牲畜联系人信息。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除。如果存在鹿或牲畜数据,则不会删除。SQL express选项被设置为“无操作”,换句话说,如果共享数据在其他表中有任何子行,则可以防止其被删除

例如:

  • 联系人96拥有牲畜和鹿场数据
  • 用户选择deer farm并删除96个
  • 结果:仅删除鹿场数据。共享的联系人数据与其行一起保留
  • 用户选择牲畜并删除96
  • 结果:由于牲畜是唯一的子行,共享数据将随它一起删除。96年内将没有剩余数据
这个场景在MVCWeb应用程序中运行良好。奇怪的是,一个测试项目并没有产生正确的结果

例如:

  • 联系人96拥有牲畜和鹿场数据
  • 测试项目选择deer farm并删除96个
  • 结果:删除所有数据,包括牲畜。这是一个级联删除,不是期望的结果
以下是控制器的delete方法的代码片段:

if (contactType == Globals.getLivestockType())
    try
    {
        livestock_contacts_info livestock_contacts_info = db.livestock_contacts_info.Find(id);

        if (livestock_contacts_info != null)
        {
            db.livestock_contacts_info.Remove(livestock_contacts_info);
            db.SaveChanges();
        }
    }
    catch (Exception)
    {
        CSession["message"] = "Error deleting livestock information for contact_id" + id;
        return RedirectToAction("ListContacts");
    }
else if (contactType == Globals.getDeerFarmType())
    try
    {
        deer_contacts_info deer_contacts_info = db.deer_contacts_info.Find(id);

        if (deer_contacts_info != null)
        {
            db.deer_contacts_info.Remove(deer_contacts_info);
            db.SaveChanges();
        }
    }
    catch (Exception)
    {
        CSession["message"] = "Error deleting deer contact information for contact_id" + id;
        return RedirectToAction("ListContacts");
    }

/* after deleting subject specific data, attempt to delete shared data.  Shared data will not be deleted
    If it has any subject data remaining.
    */
try
{
    contact contact = db.contacts.Find(id);
    if (contact == null)
    {
        CSession["message"] = "contact " + id + " doesn't exist";
    }
    else
    {
        db.contacts.Remove(contact);
        db.SaveChanges();
    }

    return RedirectToAction("ListContacts");
}
我研究了接触的定义,试图了解发生了什么。这是:

public partial class contact
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int CONTACT_ID { get; set; }

    [RegularExpression("^[^;]{0,100}$", ErrorMessage="This text field has unacceptable characters")]    /* ; not allowed */
    public string FIRST_NAME { get; set; }
    public string MIDDLE_NAME { get; set; }
    public string LAST_NAME { get; set; }
    public string BUSINESS_NAME { get; set; }
    public string ADDRESS1 { get; set; }
    public string ADDRESS2 { get; set; }
    public string CITY { get; set; }
    public string STATE { get; set; }
    public string ZIP_CODE { get; set; }
    public string COUNTRY { get; set; }
    public string TELEPHONE1 { get; set; }
    public string TELEPHONE2 { get; set; }
    [RegularExpression("^[0-9-]{0,10}$", ErrorMessage="Please use only digits and dashes, with a maximum length of 10")]
    public string CELL_PHONE { get; set; }
    [EmailAddress]
    public string EMAIL_ADDRESS { get; set; }
    public string COMMENTS { get; set; }

    public virtual deer_contacts_info deer_contacts_info { get; set; }
    public virtual livestock_contacts_info livestock_contacts_info { get; set; }
}

代码段首先删除鹿场和牲畜数据,然后删除共享联系人。在代码的共享联系人删除部分,我比较了两个测试的类内容:对于web MVC测试,
deer\u contacts\u info
Fastes\u contacts\u info
都为空。但是,测试项目测试具有非空内容。然后我修改了代码,使它们都为空。结果没有改变:测试项目执行级联删除。你对此有什么想法吗?

请修复你的标签:这不是asp-classic。你好,玛莎,谢谢你的询问。这不是经典的ASP,这是MVC。