EF Code First создает запрос с неправильными столбцами - PullRequest
0 голосов
/ 20 сентября 2019

Я использую EF 6.0 и сначала создаю свои представления базы данных, используя код.У меня есть небольшой образец, который отлично работает.Я пытаюсь перейти на другой набор взглядов.По какой-то причине я получаю неправильное имя столбца в запросе для одного из столбцов.Похоже, что это привнесено в колонку с другой точки зрения, к которой я присоединяюсь.

Я пытался изменить столбцы [Key] в таблицах, но, похоже, он не меняется.

Представление vABC состоит из столбцов: name varchar (30) и descvarchar (100) Представление vXYZ состоит из столбцов: имя varchar (30) и число с плавающей точкой

Они будут объединяться друг с другом по имени.

Это фрагмент запроса, который я выполняю:

             var name = dataRecord.Cells[0].Value.ToString();
             var query = from b in _context.XYZ
                        .Where(b => b.name == name)
                        select b;

Это возвращается:

SELECT 
    1 AS [C1], 
    [Extent1].[name] AS [name], 
    [Extent1].[amount] AS [amount],  
    [Extent1].[ABC_name] AS [ABC_name]
    FROM [dbo].[vXYZ] AS [Extent1]
    WHERE [Extent1].[name] = @p__linq__0

Я прикреплю классы и dbcontext ниже.

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Mynamespace
{

    [Table("vABC")]
    public class ABC
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public ABC()
        {
            XYZs= new HashSet<XYZ>();
        }

        [Key]
        [StringLength(150)]
        public string name { get; set; }

        [StringLength(150)]
        public string Desc { get; set; }


        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<XYZ> XYZs{ get; set; }
    }
}


using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;


namespace Mynamespace
{

    [Table("vXYZ")]
    public class Price
    {
        [Key]
        [Required]
        [StringLength(200)]
        public string name{ get; set; }

        public decimal? amount{ get; set; }

        public virtual ABC ABC{ get; set; }
    }
}

namespace Mynamespace
{
    using System.Data.Entity;

    public partial class myContext : DbContext
    {
        public myContext () : base("name=myContext ")
        {
            Database.SetInitializer<myContext >(null);
        }

        public virtual DbSet<ABC> ABCs { get; set; }
        public virtual DbSet<XYZ> XYZs { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<XYZ>()
                .Property(e => e.amount)
                .HasPrecision(19, 4);
        }
    }
}

Я ожидаю, что запрос будет

SELECT [Extent1].[name] AS [name], 
    [Extent1].[amount] AS [amount]
    FROM [dbo].[vXYZ] AS [Extent1]
    WHERE [Extent1].[name] = @p__linq__0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...