繁体   English   中英

如何在ASP.NET MVC应用程序中首先使用EF代码检查SQL表中是否存在数据?

[英]How to check if data exist in SQL table using EF code first in ASP.NET MVC application?

我有这个模型类:

public class MembershipSerial
{
    [HiddenInput(DisplayValue=false)]
    public int Id { get; set; }
    [HiddenInput(DisplayValue=false)]
    public string Serial { get; set; }
    [Required]
    [Display(Name="Membership Serial")]
    public string SerialConfirmed { get; set; }
}

我使用EF代码优先方法,我想检查Serial vs SerialConfirmed的值,并找到任何等于SerialConfirmed的Serial。

我尝试下面但我得到一个null异常,不知道如何解决这个问题?

    public ActionResult Checkout(UserDetails Details)
    {
        if (Details.MembershipSerial.Serial.Any().ToString() == Details.MembershipSerial.SerialConfirmed)
        {
            return View("UserSerial");
        }

        return View();
    }

    public class UserDetails : IdentityUser
    {
        public virtual DeliveryDetails DeliveryDetails { get; set; }
        public virtual UserOrders UserOrders { get; set; }
        public virtual MembershipSerial MembershipSerial { get; set; }
    }

编辑:

public class MembershipSerial
{
    [HiddenInput(DisplayValue=false)]
    public int Id { get; set; }
    [HiddenInput(DisplayValue=false)]
    public string Serial { get; set; }
    [Required]
    [Display(Name="Membership Serial")]
    public string SerialConfirmed { get; set; }
}

public class DeliveryDetails
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Phone { get; set; }
    public string Company { get; set; }
    public string Address { get; set; }
    public string AddressLine2 { get; set; }
    public string District { get; set; }
    public string Province { get; set; }
}
public class UserOrders
{
    public int Id { get; set; }
    public string ProductName { get; set; }
}

public class MyDbContext : IdentityDbContext<UserDetails>
{
    public MyDbContext()
        : base ("EFDbContext")
    {
    }
    public System.Data.Entity.DbSet<MembershipSerial> MembershipSerial { get; set; }
    public System.Data.Entity.DbSet<DeliveryDetails> DeliveryDetails { get; set; }
    public System.Data.Entity.DbSet<UserOrders> UserOrders { get; set; }
}

任何帮助表示赞赏。 提前致谢。

你的if语句应该是这样的:

 if (Details.MembershipSerial.Serial == Details.MembershipSerial.SerialConfirmed)

Serial和Serial Confirmed是字符串,因此您只需比较它们即可

如果您尝试将数据库中的任何Serial与用户正在Check OutSerialConfirmed进行比较,那么您需要一个变量来保存连接字符串的新实例:假设MemberShipSerial是数据库中的表...

using(var db = new ConnectionString())
{
    if(db.MembershipSerial.Any(x => x.Serial.ToUpper() == Details.MembershipSerial.SerialConfirmed.ToUpper())
    {
        /*do something*/
    }
 }

如果你只想根据用户键入的内容比较SerialSerialConfirmed然后使用

if(Details.MembershipSerial.Serial.ToUpper() == Details.MembershipSerial.SerialConfirmed.ToUpper())

如果第二个选项返回一个空异常,那么你必须调试CheckingIn Action并查看那些属性是否包含你期望的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM