مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

مشکل هنگام اجرا signalR

  • پنجشنبه 5 مهر 1397
  • 13:31
تشکر میکنم

سلام

من باتوجه به آموزش زیر signalR را در برنامه mvc اجرام کردم و درست هم کار میکند

https://www.codeproject.com/Tips/1075852/ASP-NET-MVC-SignalR-SqlDependency-and-EntityFramew

دربرنامه کلاسهای زیر را ایجاد کرده ام

using System;
using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;

namespace SignalR_Ef_CodeFirst.Models
{
    [Serializable]
    [DataContract(IsReference = true)]
    public class Student:EntityBase
    {
        [Key]
        public int StudentId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int? Age { get; set; }
        public string date { get; set; }
    }
}

کلاس بالا در دیتابیس تبدیل به جدول میشود

using System;
using System.Runtime.Serialization;
namespace SignalR_Ef_CodeFirst.Models
{
    [Serializable]
    [DataContract(IsReference = true)]
    public class StudentList
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int? Age { get; set; }
    }
}

جدول به این نام در دیتابیس وجود ندارد 
وقتی این کد را مینویسم درست کار میکند برنامه

 public async Task<ActionResult> Index()
        {
            var collection = db.Students;
            ViewBag.NotifierEntity = db.GetNotifierEntity<Student>(collection).ToJson();
            return View(await collection.ToListAsync());
        }

اما مشکلی که وجود دارد وقتی می خواهم اطلاعات جدولی را که در دیتابیس وجود دارد از طریق کلاسی که در دیتابیس وجود ندارد لیست کنم نمی توانم 

  public async Task<ActionResult> Index()
        {
            var collection = db.Students;
            ViewBag.NotifierEntity = db.GetNotifierEntity<StudentList>(collection).ToJson();
            return View(await collection.ToListAsync());
        }

ارور زیر را میدهد

Error	CS0311	The type 'SignalR_Ef_CodeFirst.Models.StudentList' cannot be used as type parameter
 'TEntity' in the generic type or method 'DbContextExtensions.GetNotifierEntity<TEntity>(DbContext, IQueryable)'.
 There is no implicit reference conversion from 'SignalR_Ef_CodeFirst.Models.StudentList' to 'SignalR_Ef_CodeFirst.Models.EntityBase'.
 SignalR_Ef_CodeFirst

برای حل این مشکل باید چکار کنم

باتشکر 

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • شنبه 7 مهر 1397
  • 08:18

خب نمیتونه دیگه!

توقع دارین بتونه ؟

داخل کلاس StudentList باید مثل متد زیر بنویسید و فیلدهای EntityBased رو متناظر با StudentList قرار بدین تا بتونه دوتا کلاس رو مساوی هم قرار بده.

    public static implicit operator A(B v)
    {
        return new A
        {
            one = v.one,
            two = v.two
        };
    }

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)