我刚买了2个月的godaddy托管.我使用EF CodeFirst编写了一个ASP.NET MVC3应用程序.在应用程序中,我使用初始化程序,如果模型已更改,将删除/创建数据库.当我尝试这样说时,我收到了一个错误
"Cannot drop the database 'cellularautomata', because it does not exist or you do not have permission."
Run Code Online (Sandbox Code Playgroud)
我认为这与我在共享主机上并且没有删除/创建数据库的权限这一事实有关.有没有办法解决?
asp.net shared-hosting code-first ef-code-first asp.net-mvc-3
这是约.我正在使用的代码.
public class Note {
public virtual Customer Customer { get; set; }
public virtual User User { get; set; }
public ICollection<NoteComment> Comments { get; set; }
}
public class NoteComment {
public virtual User User { get; set; }
}
public class User {
public ICollection<Note> Notes { get; set; }
}
public class Customer {}
// --------------------------------------
public class OurDataContext {
private void ConfigureNotes(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Note>()
.HasRequired<User>(n => n.User)
.WithMany(u => u.Notes)
.Map(a => a.MapKey("UserId"));
modelBuilder.Entity<Note>() …Run Code Online (Sandbox Code Playgroud) entity-framework circular-reference code-first sql-server-ce ef-code-first
这是情况,我有三个实体有以下关系:
-Team one-to-one TeamContact
-TeamContact one-to-one TeamAddress
Run Code Online (Sandbox Code Playgroud)
我已经设法创建,添加和保存这些对象没有任何问题.但是,当我尝试创建编辑方法时,修改后只保存父对象.见下面我到目前为止的情况;
在我的Db类中保存方法
public void SaveTeam(Team team)
{
if (team.Id == 0)
{
context.Teams.Add(team);
}
else
{
var model = context.Teams.Find(team.Id);
context.Entry(model).CurrentValues.SetValues(team);
}
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
编辑方法
[HttpGet]
public ActionResult Edit(int id)
{
var model = _dataSource.Teams.FirstOrDefault(t => t.Id == id);
return View(model);
}
[HttpPost]
public ActionResult Edit(Team team)
{
if (ModelState.IsValid)
{
_dataSource.SaveTeam(team);
return RedirectToAction("Detail", "Team", new { id = team.Id });
}
return View(team);
}
Run Code Online (Sandbox Code Playgroud)
就像我上面所说,我只能让我修改父对象,我在这里错过了什么?
试着
public void SaveTeam(Team team)
{
if …Run Code Online (Sandbox Code Playgroud) 我认为在很多情况下这是一个普遍问题,但我没有在网上找到合适的答案.在我的MVC应用程序中,我有以下表格:
问题表:
---------------------------------------------
IssueID (pk) | CategoryID (fk) | IssueNumber
---------------------------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 1 | 3
Run Code Online (Sandbox Code Playgroud)
分类表:
-----------------------------------
CategoryID (pk) | Prefix | Name
-----------------------------------
1 | COM | Computer
2 | GEN | General
Run Code Online (Sandbox Code Playgroud)
在这里,我对两个类别(COM和GEN)使用IssueID(主键)字段.另一方面,我想依次生成IssueNumber(1,2,3 ......)而没有任何CategoryID的差距.另一方面,我还想从1开始为另一个类别创建IssueNumber,如上所示.所以问题是:
1)上述方法有问题吗?如果是这样,你对此有何建议?
2)在创建记录之前,如何获取IssueNumber的最大值?我想在SaveChanges()方法上做这个(我使用Entity Framework).由于我没有将IssueNumber字段设为PK,因此我无法使MsSQL Server自动增加此列值.
任何帮助,将不胜感激.提前致谢.
更新:
以下是使用lambda的解决方案:
public int SaveIssue(Issue issue)
{
int max = context.Issues.Where(m => m.CategoryID == issue.CategoryID ).Max(m => m.IssueNumber);
issue.IssueNum = max + 1; …Run Code Online (Sandbox Code Playgroud) sql-server asp.net-mvc entity-framework primary-key code-first
我刚刚开始使用CTP4和Code-First.我有一个可能的约会网站的以下设置:
public class User
{
[Key]
public int Id { get; set; }
[Required]
public string LoginName { get; set; }
[Required]
public string Firstname { get; set; }
[Required]
public string Lastname { get; set; }
public string Street { get; set; }
[Required]
public string Zip { get; set; }
[Required]
public string City { get; set; }
[Required]
public bool Gender { get; set; }
[Required]
public int SoughtGender { get; set; }
[Required]
public string Password …Run Code Online (Sandbox Code Playgroud) 我是MVC/EF新手.
我在我的数据库中有几个不同的表:说柠檬,糖和水.
我应该创建三个单独的模型:柠檬,糖和水,还是制作一个定义三个不同类的大型模型(有三个独立的DBContext类?)然后构建每个模型?
现在我正在制作单独的模型,但看起来我必须最终建立三个独立的数据库,这似乎有点过分.
电影示例只有一个表,所以它不能很好地回答我的问题.
有没有人尝试过映射继承的属性?因为我很高兴听到它正常工作并且我在某处犯了错误,因为我收到以下错误:
"属性'UserName'不是'Advertiser'类型的声明属性.通过使用Ignore方法或NotMappedAttribute数据注释验证该属性是否未从模型中显式排除.请确保它是有效的原始属性."
我的模型看起来像这样:
abstract class Entity { public int Id {get; set; }}
abstract class User : Entity { public string UserName {get; set;} }
sealed class Advertiser : User { }
Run Code Online (Sandbox Code Playgroud)
我的AdvertisementConfiguration类看起来像这样:
class AdvertiserConfiguration : EntityTypeConfiguration<Advertiser>
{
public AdvertiserConfiguration()
{
// the following line indirectly causes an InvalidOperationException:
Property( x => x.UserName ).HasMaxLength(50);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我更改广告商类以使其不从User继承(并将UserName属性拉下来),那么一切正常.
entity-framework invalidoperationexception code-first entity-framework-4 ef-code-first
我有两个实体,用户和反馈,在用户名字段的帮助下,它们之间存在一对多关系。
Feedback --> User
-------- --------
username username
Run Code Online (Sandbox Code Playgroud)
但是,有时反馈可能来自未注册的用户,并且“反馈”上的“用户名”字段将为Null。在这种情况下,由于外键约束,添加反馈将失败。
如何以声明方式或通过Fluent API禁用对关系的外键约束的实施?创建数据库时,默认情况下启用它。
谢谢!
我已经在几台机器上的visual studio 2010和11 beta上试过这个.我还使用了EF 4.3和5.0 - beta 2.我正在尝试Silverlight 5中的代码优先方法.
我创建了一个DbDomainService并为它创建了CRUD操作,但在客户端没有创建任何代理实体.我在WCF类库中执行此操作.以下是它的创建方法:我将一个项目添加到解决方案(WCF RIA Services类库).客户端和服务端项目会自动添加并通过RIA链接进行链接.我创建了我的实体和dbcontext(参见下面的源代码).我创建了我的域服务类(向导只显示了一半的时间,非常错误)并确保有CRUD操作.我重建,并在客户端项目上显示所有文件,并且没有生成代码.如果我将DomianService类更改为继承自DomainService而不是DbDomainService,那么我的代理实体将按照预期在客户端生成.
构建解决方案时,我收到以下警告:
警告1创建MEF组合容器时发生以下异常:无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.将使用默认代码生成器.AProgram.Client.RIAServices
请帮忙 :)
namespace AProgram.Server.RIAServices.Models.Sales
{
public class Customer
{
[Key]
public int CustomerID { get; set; }
[Required]
[MaxLength(50)]
public string CustomerName { get; set; }
}
}
namespace AProgram.Server.RIAServices
{
public class SalesDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
}
}
namespace AProgram.Server.RIAServices
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;
// TODO: Create …Run Code Online (Sandbox Code Playgroud) 任何回答此问题的人都知道,属性参数需要常量表达式.可选参数(对于任何事物,而不仅仅是属性)也需要常量表达式作为其默认值.
我遇到的(尽管是轻微的)不便是带有RegularExpressionAttribute模式参数.我的数据模型中有许多使用此属性的属性(可在System.ComponentModel.DataAnnotations中找到),每当我对验证模式进行更改时,我都必须返回并进行更改everryyywherrreee...这真的很烦人.
是否存在可以声明的.net结构,被识别为常量表达式,然后在通常需要常量表达式的情况下可用?
如果我可以在RegexPatternForNameProperty = "^[a-zA-Z0-9,.# ]{1,150}$"某个地方声明属性,然后根据需要更改那个值,那就太好了.
code-first ×10
c# ×3
asp.net ×1
asp.net-4.5 ×1
asp.net-mvc ×1
primary-key ×1
ria ×1
sql-server ×1
vb.net ×1
wcf ×1