本文整理汇总了C#中ODataModelBuilder.Singleton方法的典型用法代码示例。如果您正苦于以下问题:C# ODataModelBuilder.Singleton方法的具体用法?C# ODataModelBuilder.Singleton怎么用?C# ODataModelBuilder.Singleton使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ODataModelBuilder
的用法示例。
在下文中一共展示了ODataModelBuilder.Singleton方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetExplicitModel
public static IEdmModel GetExplicitModel(string singletonName)
{
ODataModelBuilder builder = new ODataModelBuilder();
// Define EntityType of Partner
var partner = builder.EntityType<Partner>();
partner.HasKey(p => p.ID);
partner.Property(p => p.Name);
var partnerCompany = partner.HasRequired(p => p.Company);
// Define Enum Type
var category = builder.EnumType<CompanyCategory>();
category.Member(CompanyCategory.IT);
category.Member(CompanyCategory.Communication);
category.Member(CompanyCategory.Electronics);
category.Member(CompanyCategory.Others);
// Define EntityType of Company
var company = builder.EntityType<Company>();
company.HasKey(p => p.ID);
company.Property(p => p.Name);
company.Property(p => p.Revenue);
company.EnumProperty(p => p.Category);
var companyPartners = company.HasMany(p => p.Partners);
companyPartners.IsNotCountable();
var companyBranches = company.CollectionProperty(p => p.Branches);
// Define Complex Type: Office
var office = builder.ComplexType<Office>();
office.Property(p => p.City);
office.Property(p => p.Address);
// Define Derived Type: SubCompany
var subCompany = builder.EntityType<SubCompany>();
subCompany.DerivesFrom<Company>();
subCompany.Property(p => p.Location);
subCompany.Property(p => p.Description);
subCompany.ComplexProperty(p => p.Office);
builder.Namespace = typeof(Partner).Namespace;
// Define PartnerSet and Company(singleton)
EntitySetConfiguration<Partner> partnersConfiguration = builder.EntitySet<Partner>("Partners");
partnersConfiguration.HasIdLink(c=>c.GenerateSelfLink(false), true);
partnersConfiguration.HasSingletonBinding(c => c.Company, singletonName);
Func<EntityInstanceContext<Partner>, IEdmNavigationProperty, Uri> link = (eic, np) => eic.GenerateNavigationPropertyLink(np, false);
partnersConfiguration.HasNavigationPropertyLink(partnerCompany, link, true);
partnersConfiguration.EntityType.Collection.Action("ResetDataSource");
SingletonConfiguration<Company> companyConfiguration = builder.Singleton<Company>(singletonName);
companyConfiguration.HasIdLink(c => c.GenerateSelfLink(false), true);
companyConfiguration.HasManyBinding(c => c.Partners, "Partners");
Func<EntityInstanceContext<Company>, IEdmNavigationProperty, Uri> linkFactory = (eic, np) => eic.GenerateNavigationPropertyLink(np, false);
companyConfiguration.HasNavigationPropertyLink(companyPartners, linkFactory, true);
companyConfiguration.EntityType.Action("ResetDataSource");
companyConfiguration.EntityType.Function("GetPartnersCount").Returns<int>();
return builder.GetEdmModel();
}
示例2: GetExplicitModel
public static IEdmModel GetExplicitModel()
{
ODataModelBuilder builder = new ODataModelBuilder();
var accountType = builder.EntityType<Account>();
accountType.HasKey(a => a.AccountID);
accountType.Property(a => a.Name);
var payoutPI = accountType.ContainsOptional(a => a.PayoutPI);
var payinPIs = accountType.HasMany(a => a.PayinPIs)
.Contained();
var premiumAccountType = builder.EntityType<PremiumAccount>()
.DerivesFrom<Account>();
var giftCard = premiumAccountType.ContainsRequired(pa => pa.GiftCard);
var giftCardType = builder.EntityType<GiftCard>();
giftCardType.HasKey(g => g.GiftCardID);
giftCardType.Property(g => g.GiftCardNO);
giftCardType.Property(g => g.Amount);
var paymentInstrumentType = builder.EntityType<PaymentInstrument>();
paymentInstrumentType.HasKey(pi => pi.PaymentInstrumentID);
paymentInstrumentType.Property(pi => pi.FriendlyName);
var statement = paymentInstrumentType.ContainsOptional(pi => pi.Statement);
var statementType = builder.EntityType<Statement>();
statementType.HasKey(s => s.StatementID);
statementType.Property(s => s.TransactionDescription);
statementType.Property(s => s.Amount);
var accounts = builder.EntitySet<Account>("Accounts");
accounts.HasIdLink(c => c.GenerateSelfLink(false), true);
accounts.HasEditLink(c => c.GenerateSelfLink(true), true);
builder.Singleton<Account>("AnonymousAccount");
AddBoundActionsAndFunctions(builder);
builder.Namespace = typeof(Account).Namespace;
return builder.GetEdmModel();
}
示例3: GetEdmModel
public static IEdmModel GetEdmModel()
{
if (_model == null)
{
ODataModelBuilder model = new ODataModelBuilder();
var color = model.EnumType<Color>();
color.Member(Color.Red);
color.Member(Color.Green);
color.Member(Color.Blue);
var people = model.EntitySet<FormatterPerson>("People");
people.HasFeedSelfLink(context => new Uri(context.Url.CreateODataLink(new EntitySetPathSegment(
context.EntitySetBase))));
people.HasIdLink(context =>
{
return new Uri(context.Url.CreateODataLink(
new EntitySetPathSegment(context.NavigationSource as IEdmEntitySet),
new KeyValuePathSegment(context.GetPropertyValue("PerId").ToString())));
},
followsConventions: false);
var person = people.EntityType;
person.HasKey(p => p.PerId);
person.Property(p => p.Age);
person.Property(p => p.MyGuid);
person.Property(p => p.Name);
person.EnumProperty(p => p.FavoriteColor);
person.ComplexProperty<FormatterOrder>(p => p.Order);
var order = model.ComplexType<FormatterOrder>();
order.Property(o => o.OrderAmount);
order.Property(o => o.OrderName);
// Add a top level function without parameter and the "IncludeInServiceDocument = true"
var getPerson = model.Function("GetPerson");
getPerson.ReturnsFromEntitySet<FormatterPerson>("People");
getPerson.IncludeInServiceDocument = true;
// Add a top level function without parameter and the "IncludeInServiceDocument = false"
var getAddress = model.Function("GetAddress");
getAddress.Returns<string>();
getAddress.IncludeInServiceDocument = false;
// Add an overload top level function with parameters and the "IncludeInServiceDocument = true"
getPerson = model.Function("GetPerson");
getPerson.Parameter<int>("PerId");
getPerson.ReturnsFromEntitySet<FormatterPerson>("People");
getPerson.IncludeInServiceDocument = true;
// Add an overload top level function with parameters and the "IncludeInServiceDocument = false"
getAddress = model.Function("GetAddress");
getAddress.Parameter<int>("AddressId");
getAddress.Returns<string>();
getAddress.IncludeInServiceDocument = false;
// Add an overload top level function
var getVipPerson = model.Function("GetVipPerson");
getVipPerson.Parameter<string>("name");
getVipPerson.ReturnsFromEntitySet<FormatterPerson>("People");
getVipPerson.IncludeInServiceDocument = true;
// Add a top level function which is included in service document
getVipPerson = model.Function("GetVipPerson");
getVipPerson.ReturnsFromEntitySet<FormatterPerson>("People");
getVipPerson.IncludeInServiceDocument = true;
// Add an overload top level function
getVipPerson = model.Function("GetVipPerson");
getVipPerson.Parameter<int>("PerId");
getVipPerson.Parameter<string>("name");
getVipPerson.ReturnsFromEntitySet<FormatterPerson>("People");
getVipPerson.IncludeInServiceDocument = true;
// Add a top level function with parameters and without any overload
var getSalary = model.Function("GetSalary");
getSalary.Parameter<int>("PerId");
getSalary.Parameter<string>("month");
getSalary.Returns<int>();
getSalary.IncludeInServiceDocument = true;
// Add Singleton
var president = model.Singleton<FormatterPerson>("President");
president.HasIdLink(context =>
{
return new Uri(context.Url.CreateODataLink(new SingletonPathSegment((IEdmSingleton)context.NavigationSource)));
},
followsConventions: false);
_model = model.GetEdmModel();
}
return _model;
}
示例4: RemoveSingleton_ByName
public void RemoveSingleton_ByName()
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
builder.Singleton<Car>("Contoso");
// Act
bool removed = builder.RemoveSingleton("Contoso");
// Assert
Assert.True(removed);
Assert.Empty(builder.Singletons);
}
示例5: AddSingleton_ByName
public void AddSingleton_ByName()
{
// Arrange
ODataModelBuilder builder = new ODataModelBuilder();
// Act
var singletonType = builder.Singleton<Company>("OsCorp");
// Assert
Assert.IsType(typeof(SingletonConfiguration<Company>), singletonType);
var singleton = Assert.Single(builder.Singletons);
Assert.Equal("OsCorp", singleton.Name);
Assert.Equal(typeof(Company), singleton.ClrType);
}
示例6: CreateEdmModel_WithSingletons_AndSingletonBindingToSingleton
public void CreateEdmModel_WithSingletons_AndSingletonBindingToSingleton()
{
// Arrange
var builder = new ODataModelBuilder()
.Add_Company_EntityType()
.Add_Employee_EntityType()
.Add_CompanyEmployees_Relationship();
// Singleton -> Singleton
builder.Singleton<Company>("OsCorp").HasSingletonBinding(c => c.CEO, "Boss");
// Act & Assert
var model = builder.GetEdmModel();
Assert.NotNull(model);
var container = model.SchemaElements.OfType<IEdmEntityContainer>().SingleOrDefault();
Assert.NotNull(container);
var osCorp = container.FindSingleton("OsCorp");
Assert.NotNull(osCorp);
var gates = container.FindSingleton("Boss");
Assert.NotNull(gates);
var vipCompanyVipEmployee = osCorp.NavigationPropertyBindings.FirstOrDefault(nt => nt.NavigationProperty.Name == "CEO");
Assert.NotNull(vipCompanyVipEmployee);
Assert.Same(gates, vipCompanyVipEmployee.Target);
Assert.Equal("Boss", vipCompanyVipEmployee.Target.Name);
}
示例7: CreateEdmModel_WithSingletonAndEntitySet_AndSingletonBindingToEntitySet
public void CreateEdmModel_WithSingletonAndEntitySet_AndSingletonBindingToEntitySet()
{
// Arrange
var builder = new ODataModelBuilder()
.Add_Company_EntityType()
.Add_Employee_EntityType()
.Add_CompanyEmployees_Relationship();
// Singleton -> EntitySet
builder.Singleton<Company>("OsCorp").HasManyBinding(c => c.ComplanyEmployees, "Employees");
// Act & Assert
var model = builder.GetEdmModel();
Assert.NotNull(model);
var container = model.SchemaElements.OfType<IEdmEntityContainer>().SingleOrDefault();
Assert.NotNull(container);
var osCorp = container.FindSingleton("OsCorp");
Assert.NotNull(osCorp);
var employees = container.FindEntitySet("Employees");
Assert.NotNull(employees);
var companyEmployees = osCorp.NavigationPropertyBindings.FirstOrDefault(nt => nt.NavigationProperty.Name == "ComplanyEmployees");
Assert.NotNull(companyEmployees);
Assert.Equal("Employees", companyEmployees.Target.Name);
}
示例8: GetSingletonModel
private ODataModelBuilder GetSingletonModel()
{
ODataModelBuilder builder = new ODataModelBuilder();
var product = builder.Singleton<SingletonProduct>("Exchange");
var productType = product.EntityType;
productType.HasKey(p => p.ID);
productType.Property(p => p.Name);
productType.Property(p => p.Price);
productType.Property(p => p.Cost);
return builder;
}