エンティティPersonがEFによって生成されています。私は、あなたが特定の文字を検索するときに、Facebookの検索のように、オートコンプリートのテキストボックスにファーストネームを表示しようとしています。私が実行しようとするとき、私は、エラー・メッセージが表示されます:LINQ to Entitiesクエリでエンティティを構築できません
The entity or complex type 'Dejtingsajt3.Repositories.Person' cannot be constructed in a LINQ to Entities query.
これは.htmlのページから私のスクリプトコードです:
<script>
$("#searchInput").autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetSearchValue", "Home")',
dataType: "json",
data: { search: $("#searchInput").val() },
success: function (data) {
response($.map(data, function (item) {
return { label: item.FirstName, value: item.FirstName };
}));
},
error: function (xhr, status, error) {
alert("Error");
}
});
}
});
</script>
これは、コントローラからの私の方法です:
public class HomeController : Controller
{
private DataContext dataContext = new DataContext();
public ActionResult Index()
{
return View();
}
public JsonResult GetSearchValue(string search)
{
List<Person> allSearch = dataContext.User.Where(n => n.FirstName
.Contains(search)).Select(x => new Person
{
FirstName = x.FirstName
}).ToList();
return new JsonResult {Data=allSearch, JsonRequestBehavior =
JsonRequestBehavior.AllowGet };
}
}
そして、これは私の人-エンティティです:
public class Person
{
public Person()
{
FriendRequestReceive = new HashSet<FriendRequest>();
FriendRequestSend = new HashSet<FriendRequest>();
MessageRecieve = new HashSet<Message>();
MessageSend = new HashSet<Message>();
}
[Key]
public int PersonID { get; set; }
[Required(ErrorMessage = "A first name is required.")]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required(ErrorMessage = "A last name is required.")]
public string LastName { get; set; }
[Required(ErrorMessage = "A social number is required.")]
public string SocialNumber { get; set; }
[Required(ErrorMessage = "A gender is required.")]
public string Gender { get; set; }
[Required(ErrorMessage = "A city is required.")]
public string City { get; set; }
[EmailAddress(ErrorMessage = "Please enter a valid email.")]
public string Mail { get; set; }
public string ProfilePicture { get; set; }
public string PresentationText { get; set; }
public string Preference { get; set; }
[Required(ErrorMessage = "A username is required.")]
public string UserName { get; set; }
[Compare("Password", ErrorMessage = "A password is required")]
[DataType(DataType.Password)]
public string Password { get; set; }
public virtual ICollection<FriendRequest> FriendRequestReceive { get; set; }
public virtual ICollection<FriendRequest> FriendRequestSend { get; set; }
public virtual ICollection<Message> MessageRecieve { get; set; }
public virtual ICollection<Message> MessageSend { get; set; }
public string FileName { get; internal set; }
public string ContentType { get; internal set; }
public byte[] File { get; internal set; }
}
私は解決策を探して、いくつかの異なるアプローチを試しましたが、幸運はありませんでした。
あなたは、データベースからそれを取得する必要があり、EFクエリで 'Person'を作成することはできません。 'User'オブジェクトの型が' Person'であると仮定して、 'Select'を終了してください。 – NetMage
@NetMage それは働いて、ありがとう! – user7388204
答えに変換されました: – NetMage