C# 查找函数后在MVC5EF5中修改模型
我需要在从模型加载数据后,自动插入一个关于这种类型的属性的信息,而不是来自数据库 例如:C# 查找函数后在MVC5EF5中修改模型,c#,model,entity-framework-5,asp.net-mvc-5,C#,Model,Entity Framework 5,Asp.net Mvc 5,我需要在从模型加载数据后,自动插入一个关于这种类型的属性的信息,而不是来自数据库 例如: namespace project.Models { using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.
namespace project.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
public partial class MessageSource
{
public MessageSource()
{
this.messages = new HashSet<Message>();
}
public int id { get; set; }
public string category { get; set; }
public string message { get; set; }
public string message_translation { get; set; }
public virtual ICollection<Message> messages { get; set; }
}
}
namespace项目.模型
{
使用制度;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.ComponentModel.DataAnnotations.Schema;
使用System.Data.Entity;
公共部分类消息源
{
公共消息源()
{
this.messages=new HashSet();
}
公共int id{get;set;}
公共字符串类别{get;set;}
公共字符串消息{get;set;}
公共字符串消息{get;set;}
公共虚拟ICollection消息{get;set;}
}
}
id、category和message是DB表属性,message_translation no,加载此模型后,我总是需要在message_translation中自动放置信息。怎么做
messageSource m = new messageSource();
var m2 = // query your db using sql or entity framework
然后
编辑:
另一种解决方案
Public class translation {
public int Id { get; set;}
public string language { get; set;}
public string text { get; set;}
}
然后在删除message\u翻译后,在messageSource模型中添加以下内容
Public Icollection<translation> transMsg { get; set;}
这将不会加载任何翻译bec。我们没有使用Include()
,即延迟加载
但是,当我们需要翻译时,我们通过另一个Linq查询将其拉入,如下所示:
var myMsgTranslation = myMsg.transMsgs.Where(t=>t.lang == "chinese").FirstOrDefault();
或者按照如下方式加载所有翻译
var myMsg = dbContext.messageSources.Where(m=>m.id== 6).Include(m=>m.msgTrans).FirstOrDefault();
@html.textBoxFor(model=>model.msgTrans.Where(t=>t.lang == "chinese"))
在您的查看页面中,您可以使用以下默认语言
var myMsg = dbContext.messageSources.Where(m=>m.id== 6).Include(m=>m.msgTrans).FirstOrDefault();
@html.textBoxFor(model=>model.msgTrans.Where(t=>t.lang == "chinese"))
描述者:未测试
希望能帮助我做到这一点:
public partial class MessageSource
{
public MessageSource()
{
this.messages = new HashSet<Message>();
}
public int id { get; set; }
public string category { get; set; }
public string message { get; set; }
public string message_translation { get; set; }
public virtual ICollection<Message> messages { get; set; }
public string getTranslate()
{
if(message_translation == null)
{
Message msg = messages.FirstOrDefault(m => m.language.Equals(Translate.Instance.getLanguage()));
if(msg != null)
{
message_translation = msg.translation;
}
else
{
message_translation = String.Empty;
}
}
return message_translation;
}
}
公共部分类MessageSource
{
公共消息源()
{
this.messages=new HashSet();
}
公共int id{get;set;}
公共字符串类别{get;set;}
公共字符串消息{get;set;}
公共字符串消息{get;set;}
公共虚拟ICollection消息{get;set;}
公共字符串getTranslate()
{
if(消息翻译==null)
{
Message msg=messages.FirstOrDefault(m=>m.language.Equals(Translate.Instance.getLanguage());
如果(msg!=null)
{
message_translation=msg.translation;
}
其他的
{
message_translation=String.Empty;
}
}
返回消息的翻译;
}
}
工作正常公共部分类消息源
public partial class MessageSource
{
private string _defaultLanguage;
public MessageSource(string defaultLang)
{
this.messages = new HashSet<Message>();
this._defaultLanguage = defaultLanguage ;
}
public int id { get; set; }
public string category { get; set; }
public string message { get; set; }
public string message_translation { get;
set{ value = getTranslation(_defaultLnag); }
public virtual ICollection<Message> messages { get; set; }
public string getTranslate(string lang)
{
var Translation = dbcontext.messages.Where(m=> m.Id == this.Id).FirstOrDefault().Translation.Where(t=>t.lang == lang).FirstOrDefault();
return Translation;
}
}
{
私有字符串defaultLanguage;
public MessageSource(字符串defaultLang)
{
this.messages=new HashSet();
这。_defaultLanguage=defaultLanguage;
}
公共int id{get;set;}
公共字符串类别{get;set;}
公共字符串消息{get;set;}
公共字符串消息{get;
set{value=getTranslation(_defaultLnag);}
公共虚拟ICollection消息{get;set;}
公共字符串getTranslate(字符串lang)
{
var Translation=dbcontext.messages.Where(m=>m.Id==this.Id).FirstOrDefault().Translation.Where(t=>t.lang==lang.FirstOrDefault();
返回翻译;
}
}
此解决方案假设您正在将翻译保存在链接到消息表的单独表中我需要在模型中获取此信息…=/a模型只是一个模型,您需要了解模型的概念!!!您愿意为数据库中的每条记录提供相同的翻译吗?我了解这个概念,但我想知道是否有是一种自动完成这项工作的方法,无需在整个系统中执行相同的代码即可获得翻译。类似于此,我需要将每个记录的翻译放在数据库中。您的要求不明确。因此,您将以数据库保存翻译?在不同的表中??如果是这种情况,那么您将创建另一个模型,专门用于transl这是一个好的解决方案。既然它对你有效,为什么不将你的答案标记为已接受的答案,这样其他人就可以从中受益呢?我将提出另一个答案根据您的回答,请参见下文