実行時にこのコードをコンパイルしようとしています。このコードはコードファーストのEF4クラスです。実行時にコードファーストEF4クラスをコンパイルするのに問題があります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
namespace EFCodeFirst.Model.Models
{
[Table("Blog")]
public class Blog
{
public Guid Id { get; set; }
[Column("txtTitle")]
public string Title { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string ShortTitle { get { return Title; } }
public string BloggerName { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public class Post
{
public Guid Id { get; set; }
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public Guid BlogId { get; set; }
}
}
与えられたコードをコンパイルするこのメソッドを使用します。 私はこのコードを単純なクラスでテストしました。できます。与えられたクラスでは、まったく動作しません。
error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)}
すべてのヘルプ:
private Assembly BuildAssembly(string code)
{
Microsoft.CSharp.CSharpCodeProvider provider = new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.GenerateExecutable = false;
compilerparams.GenerateInMemory = true;
CompilerResults results = compiler.CompileAssemblyFromSource(compilerparams, code);
if (results.Errors.HasErrors)
{
StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
foreach (CompilerError error in results.Errors)
{
errors.AppendFormat("Line {0},{1}\t: {2}\n", error.Line, error.Column, error.ErrorText);
}
throw new Exception(errors.ToString());
}
else
{
return results.CompiledAssembly;
}
}
と私はこのようないくつかの例外を取得していますか?
ありがとうございます。
私はこれらのコードを追加しました compilerparams.ReferencedAssemblies.Add( "mscorlib.dll"); .Add( "System.dll"); .Add( "System.Core.dll"); .Add( "System.Xml.dll"); .Add( "System.ComponentModel.DataAnnotations.dll"); これらのエラーが発生しました。 型または名前空間の名前 'Column'が見つかりませんでした "" "'ColumnAttribute'が見つかりません " "" 'DatabaseGenerated'が見つかりませんでした "" "'DatabaseGeneratedAttribute'が見つかりませんでした "" "'テーブル'が見つかりませんでした " "" 'TableAttribute'が見つかりませんでした コンパイラはいくつかのEFクラスを知らないようです。 – PickleRick
compilerparams.ReferencedAssemblies.Add( "EntityFramework.dll")のようなコンパイラパラメータにEF参照を追加し、コンパイルするコードに次の名前空間を使用していることを確認する必要があります。using System.Data.Entity ; using System.ComponentModel.DataAnnotations; "私もこれを含むように私の答えを更新しました。 –