如果可以在具有Entity Framework 5 RC/Visual Studio 2010的EDMX中使用表值函数?
我看不到EDMX设计师的选项,我觉得设计师在.net 4.5中?我的怀疑是否正确?或者也许在Visual Studio 11中?
我真的无法将我们的项目升级到.net 4.5,还有另一种使用表值函数的方法(可能手动修改edmx吗?).
附加信息:
这篇关于msdn的博客文章有助于确认不兼容性:
某些功能仅在编写面向.NET 4.5的应用程序时可用.这包括枚举支持,空间数据类型,表值函数和性能改进.如果您的目标是.NET 4.0,您仍然可以获得所有错误修复和其他小改进.
然而有趣的是,本教程讨论了直接修改EDMX以增加对TVF的支持,但它似乎是一个旧的测试版.XML intellisense也没有找到教程中讨论的元素,但可能是因为它使用了不同的模式.不幸的是,我已经没时间尝试将教程应用到新的EF5 Release候选版本中,但我有兴趣知道是否有人有运气.
.net-4.0 visual-studio-2010 .net-4.5 entity-framework-5 visual-studio-2012
假设我有一个包含以下字段的表:
联盟将举办许多比赛.通常每个联盟都将使用自己的本地数据库,因此LeagueID字段在此本地数据库的所有记录中都是相同的.联盟每年一次将其数据上传到国家当局,然后联盟ID将有必要对具有相同MatchID的比赛进行识别.
实现复合主键的最佳方法是什么(使用EF Fluent API)?
Entity<Match>.HasKey(match=>new {match.LeagueID,match.MatchID})
Run Code Online (Sandbox Code Playgroud)
要么
Entity<Match>.HasKey(match=>new {match.MatchID,match.LeagueID})
Run Code Online (Sandbox Code Playgroud)
对于人眼来说,联盟 - 比赛的顺序是合乎逻辑的,因为它将把特定联盟的比赛保持在一起.但我明白,在编写复合键时,出于性能原因首先使用最具辨别力的字段非常重要.
database-design entity-framework composite-key entity-framework-5
如何首先使用代码将EF 5.0与成员资格提供程序集成?
我有自己的数据库架构,我想用它来注册用户等.
membership-provider code-first asp.net-mvc-4 entity-framework-5 simplemembership
我在用Entity Framework 5 code first.我试图在2个表之间设置内部联接,我不知道如何去做.这两个表没有主键/外键关联,但它们具有公共字段域.
tblServer表:
Server_ID
ServerName
Domain
...
...
Run Code Online (Sandbox Code Playgroud)
tblCommandExecutionServer表:
ServerListID
ServerName
Domain
...
...
Run Code Online (Sandbox Code Playgroud)
这就是我如何配置2个表来映射到某些实体类:
ServerConfiguration类:
class ServerConfiguration : EntityTypeConfiguration<Server>
{
internal ServerConfiguration()
{
this.ToTable("tblServer");
this.Property(x => x.Id).HasColumnName("Server_ID");
this.Property(x => x.Name).HasColumnName("ServerName");
}
}
Run Code Online (Sandbox Code Playgroud)
CommandExecutionServerConfiguration类:
class CommandExecutionServerConfiguration : EntityTypeConfiguration<CommandExecutionServer>
{
internal CommandExecutionServerConfiguration()
{
this.ToTable("tblCommandExecutionServer");
this.Property(x => x.Id).HasColumnName("ServerListID");
this.Property(x => x.Name).HasColumnName("ServerName");
}
}
Run Code Online (Sandbox Code Playgroud)
服务器类:
public class Server : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) ado.net entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5
如何仅选择一行中只有两个值的明显组合的记录?
例如,说我有以下内容:
Name | Age | Height
------------------------------------
Joe 19 99
Kim 19 76
Joe 20 88
Joe 19 69
Run Code Online (Sandbox Code Playgroud)
我怎么能写一个LINQ表达式来只选择具有相同NameAND 的行Age?
我想:
var count = context.people.Where(p => (p.age && p.name).Distinct());
和var count = context.people.Where(p => (p.age.Distinct() && p.name.Distinct()));
这样做的正确方法是什么?
我正在使用最新的Entity Framework和DBContext.我有一个结果集,我想转换为逗号分隔值.我在VB DataTable中使用DataTables做了类似的事情来进行CSV提取.我有QuoteName方法工作.我还得到了使用foreach工作的GetCSV方法的衍生物.问题是它比DataTable的可比代码要慢得多.所以我希望有人会有一些建议.
public static string GetCSV(this IQueryable entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
Type T = entity.ElementType;
var props = T.GetProperties(BindingFlags.Public | BindingFlags.Instance);
string s = string.Empty;
int iCols = props.Count();
try
{
s += string.Join(",", (from int ii in Enumerable.Range(0, iCols)
select props[ii].Name.QuoteName("[]")).ToArray());
s += Environment.NewLine;
foreach (var dr in entity)
{
s += string.Join(",", (from int ii in Enumerable.Range(0, iCols)
select
props[ii].GetValue(dr)
.ToString()
.QuoteName("\"\"", ",")).ToArray());
s += Environment.NewLine;
} …Run Code Online (Sandbox Code Playgroud) 我目前有一个带有主页的应用程序,该主页根据它们"创建"的日期显示十个电影的列表,或者输入到数据库中.我还想根据每部电影的评级显示前十部电影的列表.有没有办法传入另一个模型或改变我当前的ViewModel来做到这一点?这是我的家庭控制器的索引部分:
public ActionResult Index()
{
var model =
_db.Movies
.OrderByDescending(m => m.DateEntered)
.Take(10)
.Select(m => new MovieListViewModel
{
Id = m.Id,
Title = m.Title,
Genre = m.Genre,
ReleaseDate = m.ReleaseDate,
CountOfReviews = m.Reviews.Count()
});
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
传入的ViewModel:
public class MovieListViewModel
{
public int Id { get; set; }
public string Title { get; set; }
public string Genre { get; set; }
[Display(Name="Year Released")]
public DateTime ReleaseDate { get; set; }
public int CountOfReviews { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我的EDMX文件存在以下问题.
在其中我已经为属性和实体编写了一些文档,但是我的EF 5的t4模板并没有生成这些值.
我想要的结果应该是
public class Person
{
/// <summary>
/// Hello World Summary!!
/// </summary>
/// <remarks>
/// Hello World Remarks!!
/// </remarks>
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但我只能得到
public class Person
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果不是这样,我为什么还能在edmx文件中设置文档属性.
我设法使用asp.net MVC创建基本的CRUD操作
但是我的领域有问题Status,CreatedOn而且CreatedBy.
我希望在创建操作期间填充这些字段,并且在编辑操作期间不会更新这些字段,但我不想对这些字段使用@HiddenFor,因为您可以编辑DOM并在POST请求之前仍然更新这些信息.
基本上我想要的是使用POST请求中发送的任何数据来修补我的模型.因此,我不必担心编辑操作中正在更改我不想修改的字段.
这是我的模型和动作的代码.
模型
[Table("Account")]
public class Account
{
#region Properties
[Key]
public int AccountID { get; set; }
[Required]
[StringLength(50)]
[DisplayName("Account Name")]
public string Name { get; set; }
[Required]
[DisplayName("Time Offset")]
[Range(-24,24)]
public decimal TimeOffset { get; set; }
[StringLength(20)]
[DisplayName("Status")]
public string Status { get; set; }
public DateTime CreatedOn { get; set; }
public int CreatedBy { get; set; }
public DateTime? ModifiedOn { get; set; } …Run Code Online (Sandbox Code Playgroud) 我正在使用asp.net mvc-4 Web应用程序,我正在使用Entity Framework 5.现在我有以下模型方法: -
public IQueryable<TMSStorageDevice> CustomerSD(int customerid)
{
var customerSiteIds = entities.SiteDefinitions.Where(a => a.AccountDefinitions1.SingleOrDefault().ORG_ID == customerid).Select(a2 => a2.SITEID).ToList();
}
Run Code Online (Sandbox Code Playgroud)
现在这会引发以下错误: -
System.NotSupportedException was unhandled by user code
HResult=-2146233067
Message=The methods 'Single' and 'SingleOrDefault' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
Source=System.Data.Entity
StackTrace:
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SingleTranslatorBase.TranslateUnary(ExpressionConverter parent, DbExpression operand, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.UnarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConver
Run Code Online (Sandbox Code Playgroud)
我能够通过替换(SingleOrDefault())解决这个问题: -
a.AccountDefinitions1.SingleOrDefault().ORG_ID
Run Code Online (Sandbox Code Playgroud)
with(FirstOrDefault()): -
a.AccountDefinitions1.FirsteOrDefault().ORG_ID …Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net ×2
asp.net-mvc ×2
linq ×2
.net-4.0 ×1
.net-4.5 ×1
ado.net ×1
code-first ×1
razor ×1
t4 ×1
where ×1
xml-comments ×1