.NET MVC。 2 个表,第二个表的外键,存在 Guid,下面的列为空

问题描述 投票:0回答:1

美好的一天,

很抱歉这个“模糊”的问题,但我不知道如何让它更清楚。 问题如下:

我有一个包含“文件”的表和一个包含“付款方式”的表。 在“文件”中,我有一个 FK“PaymentMethodID”。当我选择付款方法时,ID 按预期整齐地填充在 Files.PaymentMethodID 字段中,但 PaymentMethod 仍然为空...我认为我应该能够以 File.PaymentMethod.PaymentMethod 的形式访问“PaymentMethods”中的字段...

有什么想法吗?我以前这样做过,但不知何故,这次失败了......一定是我忽略的事情。

表格:

 public class Files
 {
     public Guid FileID { get; set; }

     public Guid? PaymentMethodID { get; set; }

     [ForeignKey(nameof(PaymentMethodID))]
     [Display(Name = "Method")]
     public PaymentMethods? PaymentMethod { get; set; }
}

 public class PaymentMethods
 {
     public Guid PaymentMethodID { get; set; }

     [Display(Name = "Method")]
     [Remote("Duplicate", "PaymentMethods", HttpMethod = "POST", ErrorMessage = "This method already exists.")]
     public string PaymentMethod { get; set; }
}

控制器:

[HttpPost, ActionName("EditPayment")]
[ValidateAntiForgeryToken]
public ActionResult EditPost([Bind("FileID,RowVersion,CreatedBy,CreatedDate," +
    "Paid,PaymentMethodID,PaymentDate")] Files model)
{
    
    try
    {
        _context.Entry(fileToUpdate).OriginalValues["RowVersion"] = model.RowVersion;

        var method = _context.PaymentMethods.Find(model.PaymentMethodID);

        if (model.PaymentMethodID == null) { fileToUpdate.Paid = false; }
        else { fileToUpdate.Paid = true; }

        fileToUpdate.PaymentMethodID = model.PaymentMethodID;
        fileToUpdate.PaymentMethod = method;             // <- This is just to try if it's solved
        fileToUpdate.PaymentDate = model.PaymentDate;

        _context.SaveChanges();

        return View(fileToUpdate);
    }
    catch (DbUpdateConcurrencyException ex)
    {
        //blabla
    }
    catch (DataException /* dex */)
    {
       //blabla
    }

    return View(fileToUpdate);
}

背景:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

   //blabla

    modelBuilder.Entity<CustomerFiles>()
       .HasOne(cf => cf.Customers)
       .WithMany(c => c.Files)
       .OnDelete(DeleteBehavior.Cascade);

    modelBuilder.Entity<CustomerFiles>()
        .HasKey(cf => new { cf.FileID });

    modelBuilder.Entity<CustomerFiles>()
        .Property(cf => cf.RowVersion).IsConcurrencyToken();

    modelBuilder.Entity<PaymentMethods>()
        .HasKey(pm => new { pm.PaymentMethodID });

    modelBuilder.Entity<PaymentMethods>()
        .Property(pm => pm.RowVersion).IsConcurrencyToken();
}

File.PaymentMethod.PaymentMethod 应该可用

asp.net-mvc foreign-keys
1个回答
0
投票

在你的文件类中更改

公共付款方式?付款方式{获取;放; } 到 公共 EhloPaymentMethods?付款方式{获取;放; }

© www.soinside.com 2019 - 2024. All rights reserved.