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这是一个好的解决方案。既然它对你有效,为什么不将你的答案标记为已接受的答案,这样其他人就可以从中受益呢?我将提出另一个答案根据您的回答,请参见下文